diff options
author | Ciprian Barbu <ciprian.barbu@linaro.org> | 2014-08-18 20:09:24 +0300 |
---|---|---|
committer | Zoltan Kiss <zoltan.kiss@linaro.org> | 2015-07-09 14:24:08 +0100 |
commit | a62f8778231c982278ee07de7e55f44dc4d95c91 (patch) | |
tree | 86f3cdca591eb57c92b7ec678df3cff56d527890 | |
parent | c74317f3bb092dce9d515629b4743c35feff85ca (diff) |
Config options for building with ODP
Signed-off-by: Ciprian Barbu <ciprian.barbu@linaro.org>
Signed-off-by: Zoltan Kiss <zoltan.kiss@linaro.org>
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | acinclude.m4 | 138 | ||||
-rw-r--r-- | configure.ac | 3 | ||||
-rw-r--r-- | lib/automake.mk | 6 |
4 files changed, 148 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am index 46e861039..a5d246fc5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -77,6 +77,7 @@ docs = \ INSTALL.KVM.md \ INSTALL.Libvirt.md \ INSTALL.NetBSD.md \ + INSTALL.ODP.md \ INSTALL.RHEL.md \ INSTALL.SSL.md \ INSTALL.XenServer.md \ diff --git a/acinclude.m4 b/acinclude.m4 index 3121b0968..038ba4063 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -224,6 +224,144 @@ AC_DEFUN([OVS_CHECK_DPDK], [ AM_CONDITIONAL([DPDK_NETDEV], test -n "$RTE_SDK") ]) +dnl OVS_CHECK_ODP_DEBUG +dnl +dnl Configure ODP debug flag +AC_DEFUN([OVS_CHECK_ODP_DEBUG], [ + AC_MSG_CHECKING([for ODP Debug]) + + ODP_DEBUG=0 + + AC_ARG_WITH([odp-debug], + [AC_HELP_STRING([--with-odp-debug=[@<:@yes | no@:>@]], + [ODP debug flag; default is false])], + [ + case "$withval" in + "" | n | no) + ODP_DEBUG=0 + AC_MSG_RESULT([no]) + ;; + y | ye | yes) + ODP_DEBUG=1 + AC_MSG_RESULT([yes]) + ;; + *) + AC_MSG_ERROR([invalid config option]) + ;; + esac + ] + ) +]) + +dnl OVS_CHECK_ODP_PLATFORM +dnl +dnl Configure ODP platform +AC_DEFUN([OVS_CHECK_ODP_PLATFORM], [ + AC_MSG_CHECKING([for ODP Platform]) + + ODP_PLATFORM=linux-generic + + AC_ARG_WITH([odp-platform], + [AC_HELP_STRING([--with-odp-platform=[@<:@odp-platform@:>@]], + [ODP platform to use; default is linux-generic])], + [ + if test X"$withval" != X; then + ODP_PLATFORM=$withval + fi + if test $ODP_PLATFORM = "linux-dpdk"; then + LIBS="-lintel_dpdk $LIBS" + fi + ] + ) + AC_MSG_RESULT([$ODP_PLATFORM]) +]) + +dnl OVS_CHECK_ODP +dnl +dnl Configure ODP source tree +AC_DEFUN([OVS_CHECK_ODP], [ + AC_MSG_CHECKING([for ODP]) + + AC_ARG_WITH([odp], + [AC_HELP_STRING([--with-odp=[@<:@DIR | yes | no@:>@]], + [Specify the ODP build directory or system default])], + [ + case "$withval" in + "" | n | no) + with_odp="" + ;; + y | ye | yes) + ODP=yes + ;; + *) + ODP=$withval + if test -f "$ODP/include/odp.h" ; then + ODP_INCLUDE=$ODP/include + else + AC_MSG_ERROR([cannot find ODP headers]) + fi + + if test -f "$ODP/lib/libodp.a" ; then + ODP_LIB_DIR="$ODP/lib" + else + AC_MSG_ERROR([cannot find ODP lib]) + fi + + AC_SUBST([ODP_INCLUDE]) + AC_SUBST([ODP_LIB_DIR]) + ;; + esac + ] + ) + + if test X"$with_odp" != X; then + + ODP_LIB="-lodp" + + ovs_save_CFLAGS="$CFLAGS" + ovs_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -L$ODP_LIB_DIR" + CFLAGS="$CFLAGS -I$ODP_INCLUDE -DODP_DEBUG_PRINT=$ODP_DEBUG" + + # On some systems we have to add -ldl to link with odp + # + # This code, at first, tries to link without -ldl (""), + # then adds it and tries again. + # Before each attempt the search cache must be unset, + # otherwise autoconf will stick with the old result + + found=false + save_LIBS="$LIBS" + for extras in "" "-ldl"; do + LIBS="$ODP_LIB $extras $save_LIBS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([#include <odp.h>], + [odp_init_global(NULL, NULL);])], + [found=true]) + if $found; then + break + fi + done + LIBS="$extras $save_LIBS" + if $found; then + AC_MSG_RESULT([yes]) + else + AC_MSG_ERROR([cannot link with ODP]) + fi + CFLAGS="$ovs_save_CFLAGS" + LDFLAGS="$ovs_save_LDFLAGS" + OVS_LDFLAGS="$OVS_LDFLAGS -L$ODP_LIB_DIR $ODP_LIB" + OVS_CFLAGS="$OVS_CFLAGS -I$ODP_INCLUDE -DODP_DEBUG_PRINT=$ODP_DEBUG" + + AC_DEFINE([ODP_NETDEV], [1], [System uses the ODP module.]) + else + ODP= + AC_MSG_RESULT([no]) + fi + + AM_CONDITIONAL([ODP_NETDEV], test -n "$ODP") +]) + dnl OVS_GREP_IFELSE(FILE, REGEX, [IF-MATCH], [IF-NO-MATCH]) dnl dnl Greps FILE for REGEX. If it matches, runs IF-MATCH, otherwise IF-NO-MATCH. diff --git a/configure.ac b/configure.ac index ebb8b02c9..c2b18ff99 100644 --- a/configure.ac +++ b/configure.ac @@ -162,6 +162,9 @@ AC_ARG_VAR(KARCH, [Kernel Architecture String]) AC_SUBST(KARCH) OVS_CHECK_LINUX OVS_CHECK_DPDK +OVS_CHECK_ODP_DEBUG +OVS_CHECK_ODP_PLATFORM +OVS_CHECK_ODP OVS_CHECK_PRAGMA_MESSAGE AC_SUBST([OVS_CFLAGS]) AC_SUBST([OVS_LDFLAGS]) diff --git a/lib/automake.mk b/lib/automake.mk index 2a5844b15..24e0ea93d 100644 --- a/lib/automake.mk +++ b/lib/automake.mk @@ -341,6 +341,12 @@ lib_libopenvswitch_la_SOURCES += \ lib/netdev-dpdk.h endif +if ODP_NETDEV +lib_libopenvswitch_la_SOURCES += \ + lib/netdev-odp.c \ + lib/netdev-odp.h +endif + if WIN32 lib_libopenvswitch_la_SOURCES += \ lib/dpif-netlink.c \ |