X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=acinclude.m4;h=3d0eef11876825a9754a19e5b83760afb8734ba1;hb=2cc5abd738bbd0124a27b124a5583ee1b4f61416;hp=104d4e49f7727bf9a2be10733db032e853facd36;hpb=a0903134d2d6075f2cc902dc352af82fa9941f76;p=cascardo%2Fovs.git diff --git a/acinclude.m4 b/acinclude.m4 index 104d4e49f..3d0eef118 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -22,7 +22,7 @@ AC_DEFUN([OVS_ENABLE_WERROR], [], [enable_Werror=no]) AC_CONFIG_COMMANDS_PRE( [if test "X$enable_Werror" = Xyes; then - CFLAGS="$CFLAGS -Werror" + OVS_CFLAGS="$OVS_CFLAGS -Werror" fi])]) dnl OVS_CHECK_LINUX @@ -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 14; then + if test "$version" = 3 && test "$patchlevel" -le 17; then : # Linux 3.x else - 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)]) + AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version newer than 3.17.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 @@ -163,18 +163,59 @@ dnl Configure DPDK source tree AC_DEFUN([OVS_CHECK_DPDK], [ AC_ARG_WITH([dpdk], [AC_HELP_STRING([--with-dpdk=/path/to/dpdk], - [Specify the DPDP build directory])]) + [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" - + DPDK_LIB=-lintel_dpdk + + ovs_save_CFLAGS="$CFLAGS" + ovs_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -L$DPDK_LIB_DIR" + CFLAGS="$CFLAGS -I$DPDK_INCLUDE" + + # On some systems we have to add -ldl to link with dpdk + # + # 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="$DPDK_LIB $extras $save_LIBS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([#include + #include ], + [int rte_argc; char ** rte_argv; + rte_eal_init(rte_argc, rte_argv);])], + [found=true]) + if $found; then + break + fi + done + if $found; then :; else + AC_MSG_ERROR([cannot link with dpdk]) + fi + CFLAGS="$ovs_save_CFLAGS" + LDFLAGS="$ovs_save_LDFLAGS" + OVS_LDFLAGS="$OVS_LDFLAGS -L$DPDK_LIB_DIR" + OVS_CFLAGS="$OVS_CFLAGS -I$DPDK_INCLUDE" + + # DPDK 1.7 pmd drivers are not linked unless --whole-archive is used. + # + # This happens because the rest of the DPDK code doesn't use any symbol in + # the pmd driver objects, and the drivers register themselves using an + # __attribute__((constructor)) function. + # + # These options are specified inside a single -Wl directive to prevent + # autotools from reordering them. + DPDK_vswitchd_LDFLAGS=-Wl,--whole-archive,$DPDK_LIB,--no-whole-archive + AC_SUBST([DPDK_vswitchd_LDFLAGS]) AC_DEFINE([DPDK_NETDEV], [1], [System uses the DPDK module.]) else RTE_SDK= @@ -242,6 +283,8 @@ 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/err.h], [IS_ERR_OR_NULL]) + 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]) @@ -249,6 +292,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ 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]) @@ -273,6 +318,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ 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], [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], @@ -295,6 +342,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ 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], @@ -307,8 +356,15 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ OVS_GREP_IFELSE([$KSRC/include/net/checksum.h], [csum_replace4]) OVS_GREP_IFELSE([$KSRC/include/net/checksum.h], [csum_unfold]) + OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [genl_has_listeners]) + OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [mcgrp_offset]) OVS_GREP_IFELSE([$KSRC/include/net/genetlink.h], [parallel_ops]) + 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]) @@ -320,10 +376,19 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ 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])]) + OVS_GREP_IFELSE([$KSRC/include/net/vxlan.h], [vxlan_xmit_skb]) + OVS_GREP_IFELSE([$KSRC/include/net/vxlan.h], [bool xnet], + [OVS_DEFINE([HAVE_VXLAN_XMIT_SKB_XNET_ARG])]) + OVS_GREP_IFELSE([$KSRC/include/net/udp.h], [udp_flow_src_port], + [OVS_DEFINE([HAVE_UDP_FLOW_SRC_PORT])]) + OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [ignore_df:1], + [OVS_DEFINE([HAVE_IGNORE_DF_RENAME])]) + OVS_GREP_IFELSE([$KSRC/include/uapi/linux/netdevice.h], [NET_NAME_UNKNOWN], + [OVS_DEFINE([HAVE_NET_NAME_UNKNOWN])]) OVS_CHECK_LOG2_H @@ -403,7 +468,7 @@ dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([_OVS_CHECK_CC_OPTION], [dnl - m4_define([ovs_cv_name], [ovs_cv_[]m4_translit([$1], [-], [_])])dnl + m4_define([ovs_cv_name], [ovs_cv_[]m4_translit([$1], [-=], [__])])dnl AC_CACHE_CHECK([whether $CC accepts $1], [ovs_cv_name], [ovs_save_CFLAGS="$CFLAGS" dnl Include -Werror in the compiler options, because without -Werror @@ -490,7 +555,7 @@ AC_DEFUN([OVS_CHECK_MAKE_IF], [ovs_cv_gnu_make_if], [cat <<'EOF' > conftest.mk conftest.out: - echo $(if x,y,z) > conftest.out + echo $(if x,y,z) > conftest.out .PHONY: all EOF rm -f conftest.out