aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCiprian Barbu <ciprian.barbu@linaro.org>2014-08-18 20:09:24 +0300
committerZoltan Kiss <zoltan.kiss@linaro.org>2015-07-09 14:24:08 +0100
commita62f8778231c982278ee07de7e55f44dc4d95c91 (patch)
tree86f3cdca591eb57c92b7ec678df3cff56d527890
parentc74317f3bb092dce9d515629b4743c35feff85ca (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.am1
-rw-r--r--acinclude.m4138
-rw-r--r--configure.ac3
-rw-r--r--lib/automake.mk6
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 \