X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=acinclude.m4;h=8d10360ca2e6bac71f1b129dbe765fc5a9f8b5f7;hb=7f9d9f27e787943d7d419d6bea184e4c112f0b26;hp=8145340a6b37535f474443adf89eb54605f3db1d;hpb=d76aabead8bb20614e56a7330dfb08f1c8b1b5d0;p=cascardo%2Fovs.git diff --git a/acinclude.m4 b/acinclude.m4 index 8145340a6..8d10360ca 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1,6 +1,6 @@ # -*- autoconf -*- -# Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc. +# Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -35,8 +35,8 @@ AC_DEFUN([OVS_CHECK_LINUX], [ AC_ARG_WITH([linux-source], [AC_HELP_STRING([--with-linux-source=/path/to/linux-source], [Specify the Linux kernel source directory - (usually figured out automatically from build - directory)])]) + (usually figured out automatically from build + directory)])]) # Deprecated equivalents to --with-linux, --with-linux-source. AC_ARG_WITH([l26]) @@ -75,11 +75,11 @@ AC_DEFUN([OVS_CHECK_LINUX], [ # Make sure that it exists. AC_MSG_CHECKING([for Linux build directory]) if test -d "$KBUILD"; then - AC_MSG_RESULT([$KBUILD]) - AC_SUBST(KBUILD) + AC_MSG_RESULT([$KBUILD]) + AC_SUBST(KBUILD) else - AC_MSG_RESULT([no]) - AC_ERROR([source dir $KBUILD doesn't exist]) + AC_MSG_RESULT([no]) + AC_ERROR([source dir $KBUILD doesn't exist]) fi # Debian breaks kernel headers into "source" header and "build" headers. @@ -134,10 +134,10 @@ AC_DEFUN([OVS_CHECK_LINUX], [ AC_MSG_RESULT([$kversion]) if test "$version" -ge 3; then - if test "$version" = 3 && test "$patchlevel" -le 10; then + if test "$version" = 3 && test "$patchlevel" -le 14; then : # Linux 3.x else - AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version newer than 3.10.x is not supported]) + AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version newer than 3.14.x is not supported (please refer to the FAQ for advice)]) fi else if test "$version" -le 1 || test "$patchlevel" -le 5 || test "$sublevel" -le 31; then @@ -150,13 +150,39 @@ AC_DEFUN([OVS_CHECK_LINUX], [ test ! -e "$KBUILD"/include/generated/uapi/linux/version.h)|| \ (test ! -e "$KBUILD"/include/linux/autoconf.h && \ test ! -e "$KBUILD"/include/generated/autoconf.h); then - AC_MSG_ERROR([Linux kernel source in $KBUILD is not configured]) + AC_MSG_ERROR([Linux kernel source in $KBUILD is not configured]) fi OVS_CHECK_LINUX_COMPAT fi AM_CONDITIONAL(LINUX_ENABLED, test -n "$KBUILD") ]) +dnl OVS_CHECK_DPDK +dnl +dnl Configure DPDK source tree +AC_DEFUN([OVS_CHECK_DPDK], [ + AC_ARG_WITH([dpdk], + [AC_HELP_STRING([--with-dpdk=/path/to/dpdk], + [Specify the DPDK build directory])]) + + if test X"$with_dpdk" != X; then + RTE_SDK=$with_dpdk + + DPDK_INCLUDE=$RTE_SDK/include + DPDK_LIB_DIR=$RTE_SDK/lib + DPDK_LIBS="$DPDK_LIB_DIR/libintel_dpdk.a" + + LIBS="$DPDK_LIBS $LIBS" + CPPFLAGS="-I$DPDK_INCLUDE $CPPFLAGS" + + AC_DEFINE([DPDK_NETDEV], [1], [System uses the DPDK module.]) + else + RTE_SDK= + fi + + AM_CONDITIONAL([DPDK_NETDEV], test -n "$RTE_SDK") +]) + 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. @@ -216,22 +242,31 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ [OVS_DEFINE([HAVE_CSUM_COPY_DBG])]) OVS_GREP_IFELSE([$KSRC/include/linux/err.h], [ERR_CAST]) + OVS_GREP_IFELSE([$KSRC/include/linux/hash.h], [fast_hash_ops]) OVS_GREP_IFELSE([$KSRC/include/linux/etherdevice.h], [eth_hw_addr_random]) + OVS_GREP_IFELSE([$KSRC/include/linux/etherdevice.h], [ether_addr_copy]) OVS_GREP_IFELSE([$KSRC/include/linux/if_vlan.h], [vlan_set_encap_proto]) OVS_GREP_IFELSE([$KSRC/include/linux/in.h], [ipv4_is_multicast]) + OVS_GREP_IFELSE([$KSRC/include/net/ip.h], [__ip_select_ident.*dst_entry], + [OVS_DEFINE([HAVE_IP_SELECT_IDENT_USING_DST_ENTRY])]) OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_disable_lro]) OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_get_stats]) OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_get_by_index_rcu]) OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [__skb_gso_segment]) OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [can_checksum_protocol]) + OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [netdev_features_t]) + OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [pcpu_sw_netstats]) + + OVS_GREP_IFELSE([$KSRC/include/linux/random.h], [prandom_u32]) OVS_GREP_IFELSE([$KSRC/include/linux/rcupdate.h], [rcu_read_lock_held], [], [OVS_GREP_IFELSE([$KSRC/include/linux/rtnetlink.h], [rcu_read_lock_held])]) + OVS_GREP_IFELSE([$KSRC/include/linux/rtnetlink.h], [lockdep_rtnl_is_held]) # Check for the proto_data_valid member in struct sk_buff. The [^@] # is necessary because some versions of this header remove the @@ -240,8 +275,9 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ # quoting rules. OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [[[^@]]proto_data_valid], [OVS_DEFINE([HAVE_PROTO_DATA_VALID])]) - OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [raw], - [OVS_DEFINE([HAVE_MAC_RAW])]) + OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [rxhash]) + OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [u16.*rxhash], + [OVS_DEFINE([HAVE_U16_RXHASH])]) OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_dst(], [OVS_DEFINE([HAVE_SKB_DST_ACCESSOR_FUNCS])]) OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], @@ -257,11 +293,16 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ [OVS_DEFINE([HAVE_SKB_WARN_LRO])]) OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [consume_skb]) OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_frag_page]) + OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_has_frag_list]) + OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [__skb_fill_page_desc]) OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_reset_mac_len]) OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_unclone]) - - OVS_GREP_IFELSE([$KSRC/include/linux/string.h], [kmemdup], [], - [OVS_GREP_IFELSE([$KSRC/include/linux/slab.h], [kmemdup])]) + OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_orphan_frags]) + OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_get_hash]) + OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_clear_hash]) + OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [int.skb_zerocopy(], + [OVS_DEFINE([HAVE_SKB_ZEROCOPY])]) + OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [l4_rxhash]) OVS_GREP_IFELSE([$KSRC/include/linux/types.h], [bool], [OVS_DEFINE([HAVE_BOOL_TYPE])]) @@ -274,18 +315,28 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ OVS_GREP_IFELSE([$KSRC/include/net/checksum.h], [csum_unfold]) OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [parallel_ops]) - OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [NLA_NUL_STRING]) + OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [genlmsg_new_unicast]) + OVS_GREP_IFELSE([$KSRC/include/net/gre.h], [gre_cisco_register]) + OVS_GREP_IFELSE([$KSRC/include/net/gre.h], [gre_handle_offloads]) + OVS_GREP_IFELSE([$KSRC/include/net/ip_tunnels.h], [iptunnel_xmit.*net], + [OVS_DEFINE([HAVE_IPTUNNEL_XMIT_NET])]) + OVS_GREP_IFELSE([$KSRC/include/net/ipv6.h], [IP6_FH_F_SKIP_RH]) OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_get_be16]) OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_put_be16]) OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_put_be32]) OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_put_be64]) OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_find_nested]) + OVS_GREP_IFELSE([$KSRC/include/net/vxlan.h], [vxlan_xmit_skb]) + + OVS_GREP_IFELSE([$KSRC/include/net/sctp/checksum.h], [sctp_compute_cksum]) OVS_GREP_IFELSE([$KSRC/include/linux/if_vlan.h], [ADD_ALL_VLANS_CMD], [OVS_DEFINE([HAVE_VLAN_BUG_WORKAROUND])]) OVS_GREP_IFELSE([$KSRC/include/linux/percpu.h], [this_cpu_ptr]) + OVS_GREP_IFELSE([$KSRC/include/linux/u64_stats_sync.h], [u64_stats_fetch_begin_irq]) + OVS_GREP_IFELSE([$KSRC/include/linux/openvswitch.h], [openvswitch_handle_frame_hook], [OVS_DEFINE([HAVE_RHEL_OVS_HOOK])]) @@ -528,7 +579,7 @@ AC_DEFUN([OVS_ENABLE_SPARSE], AC_SUBST([SPARSE]) AC_CONFIG_COMMANDS_PRE( [if test $ovs_cv_gnu_make_if = yes; then - CC='$(if $(C),REAL_CC="'"$CC"'" CHECK="$(SPARSE) -I $(top_srcdir)/include/sparse $(SPARSEFLAGS) $(SPARSE_EXTRA_INCLUDES) " cgcc $(CGCCFLAGS),'"$CC"')' + CC='$(if $(C),env REAL_CC="'"$CC"'" CHECK="$(SPARSE) -I $(top_srcdir)/include/sparse $(SPARSEFLAGS) $(SPARSE_EXTRA_INCLUDES) " cgcc $(CGCCFLAGS),'"$CC"')' fi])]) dnl OVS_PTHREAD_SET_NAME @@ -556,24 +607,39 @@ AC_DEFUN([OVS_CHECK_PTHREAD_SET_NAME], [for pthread_setname_np() variant], [ovs_cv_pthread_setname_np], [AC_LINK_IFELSE( - [AC_LANG_PROGRAM([#include + [AC_LANG_PROGRAM([#include ], [pthread_setname_np(pthread_self(), "name");])], - [ovs_cv_pthread_setname_np=glibc], + [ovs_cv_pthread_setname_np=glibc], [AC_LINK_IFELSE( - [AC_LANG_PROGRAM([#include + [AC_LANG_PROGRAM([#include ], [pthread_setname_np(pthread_self(), "%s", "name");])], [ovs_cv_pthread_setname_np=netbsd], - [ovs_cv_pthread_setname_np=none])])]) + [ovs_cv_pthread_setname_np=none])])]) case $ovs_cv_pthread_setname_np in # ( glibc) - AC_DEFINE( - [HAVE_GLIBC_PTHREAD_SETNAME_NP], [1], - [Define to 1 if pthread_setname_np() is available and takes 2 parameters (like glibc).]) - ;; # ( + AC_DEFINE( + [HAVE_GLIBC_PTHREAD_SETNAME_NP], [1], + [Define to 1 if pthread_setname_np() is available and takes 2 parameters (like glibc).]) + ;; # ( netbsd) - AC_DEFINE( - [HAVE_NETBSD_PTHREAD_SETNAME_NP], [1], - [Define to 1 if pthread_setname_np() is available and takes 3 parameters (like NetBSD).]) - ;; + AC_DEFINE( + [HAVE_NETBSD_PTHREAD_SETNAME_NP], [1], + [Define to 1 if pthread_setname_np() is available and takes 3 parameters (like NetBSD).]) + ;; esac fi]) + +dnl OVS_CHECK_LINUX_HOST. +dnl +dnl Checks whether we're building for a Linux host, based on the presence of +dnl the __linux__ preprocessor symbol, and sets up an Automake conditional +dnl LINUX based on the result. +AC_DEFUN([OVS_CHECK_LINUX_HOST], + [AC_CACHE_CHECK( + [whether __linux__ is defined], + [ovs_cv_linux], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([enum { LINUX = __linux__};], [])], + [ovs_cv_linux=true], + [ovs_cv_linux=false])]) + AM_CONDITIONAL([LINUX], [$ovs_cv_linux])])