X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=acinclude.m4;h=3cf4061bd1784fee6eee62e42d71149114bfb84e;hb=870b54e7c7ce23660e6db4999e58d9e6ac2ea618;hp=565ca6d28226b20101a560dad275910f68110d21;hpb=8828e5c714ed2b8af3158b0149d47cda1bdc69dc;p=sliver-openvswitch.git diff --git a/acinclude.m4 b/acinclude.m4 index 565ca6d28..3cf4061bd 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1,6 +1,6 @@ # -*- autoconf -*- -# Copyright (c) 2008, 2009, 2010 Nicira Networks. +# Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,6 +14,17 @@ # See the License for the specific language governing permissions and # limitations under the License. +dnl OVS_ENABLE_WERROR +AC_DEFUN([OVS_ENABLE_WERROR], + [AC_ARG_ENABLE( + [Werror], + [AC_HELP_STRING([--enable-Werror], [Add -Werror to CFLAGS])], + [], [enable_Werror=no]) + AC_CONFIG_COMMANDS_PRE( + [if test "X$enable_Werror" = Xyes; then + CFLAGS="$CFLAGS -Werror" + fi])]) + dnl OVS_CHECK_LINUX26 dnl dnl Configure linux kernel source tree @@ -85,7 +96,7 @@ AC_DEFUN([OVS_CHECK_LINUX26], [ fi AC_MSG_RESULT([2.$patchlevel.$sublevel]) if test "2.$patchlevel" != '2.6'; then - if test "$BUILD26" = "$KSRC26"; then + if test "$KBUILD26" = "$KSRC26"; then AC_ERROR([Linux kernel in $KBUILD26 is not version 2.6]) else AC_ERROR([Linux kernel in build tree $KBUILD26 (source tree $KSRC26) is not version 2.6]) @@ -167,7 +178,12 @@ AC_DEFUN([OVS_CHECK_LINUX26_COMPAT], [ OVS_GREP_IFELSE([$KSRC26/include/linux/netdevice.h], [dev_disable_lro]) OVS_GREP_IFELSE([$KSRC26/include/linux/netdevice.h], [dev_get_stats]) + OVS_GREP_IFELSE([$KSRC26/include/linux/netdevice.h], [dev_get_by_index_rcu]) + OVS_GREP_IFELSE([$KSRC26/include/linux/rcupdate.h], [rcu_read_lock_held], [], + [OVS_GREP_IFELSE([$KSRC26/include/linux/rtnetlink.h], + [rcu_read_lock_held])]) + # Check for the proto_data_valid member in struct sk_buff. The [^@] # is necessary because some versions of this header remove the # member but retain the kerneldoc comment that describes it (which @@ -184,8 +200,11 @@ AC_DEFUN([OVS_CHECK_LINUX26_COMPAT], [ OVS_GREP_IFELSE([$KSRC26/include/linux/skbuff.h], [skb_cow_head]) OVS_GREP_IFELSE([$KSRC26/include/linux/skbuff.h], [skb_transport_header], [OVS_DEFINE([HAVE_SKBUFF_HEADER_HELPERS])]) + OVS_GREP_IFELSE([$KSRC26/include/linux/icmpv6.h], [icmp6_hdr], + [OVS_DEFINE([HAVE_ICMP6_HDR])]) OVS_GREP_IFELSE([$KSRC26/include/linux/skbuff.h], [skb_warn_if_lro], [OVS_DEFINE([HAVE_SKB_WARN_LRO])]) + OVS_GREP_IFELSE([$KSRC26/include/linux/skbuff.h], [consume_skb]) OVS_GREP_IFELSE([$KSRC26/include/linux/string.h], [kmemdup], [], [OVS_GREP_IFELSE([$KSRC26/include/linux/slab.h], [kmemdup])]) @@ -195,10 +214,17 @@ AC_DEFUN([OVS_CHECK_LINUX26_COMPAT], [ OVS_GREP_IFELSE([$KSRC26/include/linux/types.h], [__wsum], [OVS_DEFINE([HAVE_CSUM_TYPES])]) + OVS_GREP_IFELSE([$KSRC26/include/net/checksum.h], [csum_replace4]) OVS_GREP_IFELSE([$KSRC26/include/net/checksum.h], [csum_unfold]) OVS_GREP_IFELSE([$KSRC26/include/net/netlink.h], [NLA_NUL_STRING]) OVS_GREP_IFELSE([$KSRC26/include/net/netlink.h], [nla_get_be16]) + OVS_GREP_IFELSE([$KSRC26/include/net/netlink.h], [nla_find_nested]) + + OVS_GREP_IFELSE([$KSRC26/include/linux/if_link.h], [rtnl_link_stats64]) + + OVS_GREP_IFELSE([$KSRC26/include/linux/if_vlan.h], [ADD_ALL_VLANS_CMD], + [OVS_DEFINE([HAVE_VLAN_BUG_WORKAROUND])]) OVS_CHECK_LOG2_H @@ -296,3 +322,64 @@ AC_DEFUN([OVS_CONDITIONAL_CC_OPTION], [$1], [ovs_have_cc_option=yes], [ovs_have_cc_option=no]) AM_CONDITIONAL([$2], [test $ovs_have_cc_option = yes])]) dnl ---------------------------------------------------------------------- + +dnl Check for too-old XenServer. +AC_DEFUN([OVS_CHECK_XENSERVER_VERSION], + [AC_CACHE_CHECK([XenServer release], [ovs_cv_xsversion], + [if test -e /etc/redhat-release; then + ovs_cv_xsversion=`sed -n 's/^XenServer DDK release \([[^-]]*\)-.*/\1/p' /etc/redhat-release` + fi + if test -z "$ovs_cv_xsversion"; then + ovs_cv_xsversion=none + fi]) + case $ovs_cv_xsversion in + none) + ;; + + [[1-9]][[0-9]]* | dnl XenServer 10 or later + [[6-9]]* | dnl XenServer 6 or later + 5.[[7-9]]* | dnl XenServer 5.7 or later + 5.6.[[1-9]][[0-9]][[0-9]][[0-9]]* | dnl XenServer 5.6.1000 or later + 5.6.[[2-9]][[0-9]][[0-9]]* | dnl XenServer 5.6.200 or later + 5.6.1[[0-9]][[0-9]]) dnl Xenserver 5.6.100 or later + ;; + + *) + AC_MSG_ERROR([This appears to be XenServer $ovs_cv_xsversion, but only XenServer 5.6.100 or later is supported. (If you are really using a supported version of XenServer, you may override this error message by specifying 'ovs_cv_xsversion=5.6.100' on the "configure" command line.)]) + ;; + esac]) + +dnl OVS_MAKE_HAS_IF([if-true], [if-false]) +dnl +dnl Checks whether make has the GNU make $(if condition,then,else) extension. +dnl Runs 'if-true' if so, 'if-false' otherwise. +AC_DEFUN([OVS_MAKE_HAS_IF], + [AC_CACHE_CHECK( + [whether ${MAKE-make} has GNU make \$(if) extension], + [ovs_cv_gnu_make_if], + [cat <<'EOF' > conftest.mk +conftest.out: + echo $(if x,y,z) > conftest.out +.PHONY: all +EOF + rm -f conftest.out + AS_ECHO(["$as_me:$LINENO: invoking ${MAKE-make} -f conftest.mk all:"]) >&AS_MESSAGE_LOG_FD 2>&1 + ${MAKE-make} -f conftest.mk conftest.out >&AS_MESSAGE_LOG_FD 2>&1 + AS_ECHO(["$as_me:$LINENO: conftest.out contains:"]) >&AS_MESSAGE_LOG_FD 2>&1 + cat conftest.out >&AS_MESSAGE_LOG_FD 2>&1 + result=`cat conftest.out` + rm -f conftest.mk conftest.out + if test "X$result" = "Xy"; then + ovs_cv_gnu_make_if=yes + else + ovs_cv_gnu_make_if=no + fi]) + AS_IF([test $ovs_cv_gnu_make_if = yes], [$1], [$2])]) + +dnl OVS_ENABLE_SPARSE +AC_DEFUN([OVS_ENABLE_SPARSE], + [OVS_MAKE_HAS_IF( + [AC_CONFIG_COMMANDS_PRE( + [: ${SPARSE=sparse} + AC_SUBST([SPARSE]) + CC='$(if $(C),REAL_CC="'"$CC"'" CHECK="$(SPARSE) -I $(top_srcdir)/include/sparse" cgcc,'"$CC"')'])])])