X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=m4%2Fopenvswitch.m4;h=6fb860994db04d20a1f9a29d41394fcfc5367bef;hb=16e9d4f64f4ad7adf3e5f619e65a2045282b3969;hp=7b827e70d9175547fe70e5ce7b93ccb5da1950e4;hpb=7c126fbb8a0589f2a29f3e7c520723a2d74b254e;p=openvswitch diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4 index 7b827e70..6fb86099 100644 --- a/m4/openvswitch.m4 +++ b/m4/openvswitch.m4 @@ -113,9 +113,10 @@ AC_DEFUN([OVS_CHECK_RUNDIR], [AC_ARG_WITH( [rundir], AC_HELP_STRING([--with-rundir=DIR], - [directory used for pidfiles [[LOCALSTATEDIR/run]]]), + [directory used for pidfiles + [[LOCALSTATEDIR/run/openvswitch]]]), [RUNDIR=$withval], - [RUNDIR='${localstatedir}/run']) + [RUNDIR='${localstatedir}/run/openvswitch']) AC_SUBST([RUNDIR])]) dnl Checks for the directory in which to store logs. @@ -215,14 +216,19 @@ AC_DEFUN([OVS_CHECK_LINUX_VT_H], fi]) dnl Checks for libpcre. +dnl +dnl ezio-term wants libpcre that supports the PCRE_PARTIAL feature, +dnl which is libpcre 7.2 or later. AC_DEFUN([OVS_CHECK_PCRE], [dnl Make sure that pkg-config is installed. m4_pattern_forbid([PKG_CHECK_MODULES]) - PKG_CHECK_MODULES([PCRE], [libpcre >= 7.2], [HAVE_PCRE=yes], [HAVE_PCRE=no]) - AM_CONDITIONAL([HAVE_PCRE], [test "$HAVE_PCRE" = yes]) - if test "$HAVE_PCRE" = yes; then - AC_DEFINE([HAVE_PCRE], [1], [Define to 1 if libpcre is installed.]) - fi]) + PKG_CHECK_MODULES([PCRE], + [libpcre >= 7.2], + [HAVE_PCRE_PARTIAL=yes], + [HAVE_PCRE_PARTIAL=no]) + AM_CONDITIONAL([HAVE_PCRE_PARTIAL], [test "$HAVE_PCRE_PARTIAL" = yes]) + AC_SUBST([HAVE_PCRE_PARTIAL]) +]) dnl Checks for Python 2.x, x >= 4. AC_DEFUN([OVS_CHECK_PYTHON], @@ -258,3 +264,161 @@ else: HAVE_PYTHON=no fi AM_CONDITIONAL([HAVE_PYTHON], [test "$HAVE_PYTHON" = yes])]) + +dnl Checks for dot. +AC_DEFUN([OVS_CHECK_DOT], + [AC_CACHE_CHECK( + [for dot], + [ovs_cv_dot], + [dnl "dot" writes -V output to stderr: + if (dot -V) 2>&1 | grep '^dot - [gG]raphviz version' >/dev/null 2>&1; then + ovs_cv_dot=yes + else + ovs_cv_dot=no + fi])]) + +dnl Check whether to build E-R diagrams. +AC_DEFUN([OVS_CHECK_ER_DIAGRAMS], + [AC_REQUIRE([OVS_CHECK_DOT]) + AC_REQUIRE([OVS_CHECK_PYTHON]) + AC_CACHE_CHECK( + [whether to build E-R diagrams for database], + [ovs_cv_er_diagrams], + [if test $ovs_cv_dot != no && test $ovs_cv_python != no; then + ovs_cv_er_diagrams=yes + else + ovs_cv_er_diagrams=no + fi]) + AM_CONDITIONAL([BUILD_ER_DIAGRAMS], [test $ovs_cv_er_diagrams = yes])]) + +dnl Checks for pyuic4. +AC_DEFUN([OVS_CHECK_PYUIC4], + [AC_CACHE_CHECK( + [for pyuic4], + [ovs_cv_pyuic4], + [if (pyuic4 --version) >/dev/null 2>&1; then + ovs_cv_pyuic4=pyuic4 + else + ovs_cv_pyuic4=no + fi]) + AM_MISSING_PROG([PYUIC4], [pyuic4]) + if test $ovs_cv_pyuic4 != no; then + PYUIC4=$ovs_cv_pyuic4 + fi]) + +dnl Checks whether $PYTHON supports the module given as $1 +AC_DEFUN([OVS_CHECK_PYTHON_MODULE], + [AC_REQUIRE([OVS_CHECK_PYTHON]) + AC_CACHE_CHECK( + [for $1 Python module], + [ovs_cv_py_[]AS_TR_SH([$1])], + [ovs_cv_py_[]AS_TR_SH([$1])=no + if test $HAVE_PYTHON = yes; then + AS_ECHO(["running $PYTHON -c 'import $1 +import sys +sys.exit(0)'..."]) >&AS_MESSAGE_LOG_FD 2>&1 + if $PYTHON -c 'import $1 +import sys +sys.exit(0)' >&AS_MESSAGE_LOG_FD 2>&1; then + ovs_cv_py_[]AS_TR_SH([$1])=yes + fi + fi])]) + +dnl Checks for Python modules needed by ovsdbmonitor. +AC_DEFUN([OVS_CHECK_OVSDBMONITOR], + [OVS_CHECK_PYTHON_MODULE([PySide.QtCore]) + OVS_CHECK_PYTHON_MODULE([PyQt4.QtCore]) + OVS_CHECK_PYTHON_MODULE([twisted.conch.ssh]) + OVS_CHECK_PYTHON_MODULE([twisted.internet]) + OVS_CHECK_PYTHON_MODULE([twisted.application]) + OVS_CHECK_PYTHON_MODULE([json]) + OVS_CHECK_PYTHON_MODULE([zope.interface]) + if (test $ovs_cv_py_PySide_QtCore = yes \ + || test $ovs_cv_py_PyQt4_QtCore = yes) \ + && test $ovs_cv_py_twisted_conch_ssh = yes \ + && test $ovs_cv_py_twisted_internet = yes \ + && test $ovs_cv_py_twisted_application = yes \ + && test $ovs_cv_py_json = yes \ + && test $ovs_cv_py_zope_interface = yes; then + BUILD_OVSDBMONITOR=yes + else + BUILD_OVSDBMONITOR=no + fi + AC_MSG_CHECKING([whether to build ovsdbmonitor]) + AC_MSG_RESULT([$BUILD_OVSDBMONITOR]) + AM_CONDITIONAL([BUILD_OVSDBMONITOR], [test $BUILD_OVSDBMONITOR = yes])]) + +# OVS_LINK2_IFELSE(SOURCE1, SOURCE2, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +# ------------------------------------------------------------- +# Based on AC_LINK_IFELSE, but tries to link both SOURCE1 and SOURCE2 +# into a program. +# +# This macro is borrowed from acinclude.m4 in GNU PSPP, which has the +# following license: +# +# Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. +# +m4_define([OVS_LINK2_IFELSE], +[m4_ifvaln([$1], [AC_LANG_CONFTEST([$1])])dnl +mv conftest.$ac_ext conftest1.$ac_ext +m4_ifvaln([$2], [AC_LANG_CONFTEST([$2])])dnl +mv conftest.$ac_ext conftest2.$ac_ext +rm -f conftest1.$ac_objext conftest2.$ac_objext conftest$ac_exeext +ovs_link2='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest1.$ac_ext conftest2.$ac_ext $LIBS >&5' +AS_IF([_AC_DO_STDERR($ovs_link2) && { + test -z "$ac_[]_AC_LANG_ABBREV[]_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + AS_TEST_X([conftest$ac_exeext]) + }], + [$3], + [echo "$as_me: failed source file 1 of 2 was:" >&5 +sed 's/^/| /' conftest1.$ac_ext >&5 +echo "$as_me: failed source file 2 of 2 was:" >&5 +sed 's/^/| /' conftest2.$ac_ext >&5 + $4]) +dnl Delete also the IPA/IPO (Inter Procedural Analysis/Optimization) +dnl information created by the PGI compiler (conftest_ipa8_conftest.oo), +dnl as it would interfere with the next link command. +rm -rf conftest.dSYM conftest1.dSYM conftest2.dSYM +rm -f core conftest.err conftest1.err conftest2.err +rm -f conftest1.$ac_objext conftest2.$ac_objext conftest*_ipa8_conftest*.oo +rm -f conftest$ac_exeext +rm -f m4_ifval([$1], [conftest1.$ac_ext]) m4_ifval([$2], [conftest1.$ac_ext])[]dnl +])# OVS_LINK2_IFELSE + +dnl Defines USE_LINKER_SECTIONS to 1 if the compiler supports putting +dnl variables in sections with user-defined names and the linker +dnl automatically defines __start_SECNAME and __stop_SECNAME symbols +dnl that designate the start and end of the sections. +AC_DEFUN([OVS_CHECK_LINKER_SECTIONS], + [AC_CACHE_CHECK( + [for user-defined linker section support], + [ovs_cv_use_linker_sections], + [OVS_LINK2_IFELSE( + [AC_LANG_SOURCE( + [int a __attribute__((__section__("mysection"))) = 1; + int b __attribute__((__section__("mysection"))) = 2; + int c __attribute__((__section__("mysection"))) = 3;])], + [AC_LANG_PROGRAM( + [#include + extern int __start_mysection; + extern int __stop_mysection;], + [int n_ints = &__stop_mysection - &__start_mysection; + int *i; + for (i = &__start_mysection; i < &__start_mysection + n_ints; i++) { + printf("%d\n", *i); + }])], + [ovs_cv_use_linker_sections=yes], + [ovs_cv_use_linker_sections=no])]) + if test $ovs_cv_use_linker_sections = yes; then + AC_DEFINE([USE_LINKER_SECTIONS], [1], + [Define to 1 if the compiler support putting variables + into sections with user-defined names and the linker + automatically defines __start_SECNAME and __stop_SECNAME + symbols that designate the start and end of the section.]) + fi])