Add ovsdbmonitor GUI tool by Andy Southgate, contributed by Citrix.
[sliver-openvswitch.git] / m4 / openvswitch.m4
index b726743..621d69a 100644 (file)
@@ -1,6 +1,6 @@
 # -*- autoconf -*-
 
-# Copyright (c) 2008, 2009 Nicira Networks.
+# Copyright (c) 2008, 2009, 2010 Nicira Networks.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -22,22 +22,15 @@ AC_DEFUN([OVS_CHECK_COVERAGE],
      [AC_HELP_STRING([--enable-coverage], 
                      [Enable gcov coverage tool.])],
      [case "${enableval}" in
-        (lcov) coverage=true lcov=true ;;
-        (yes) coverage=true lcov=false ;;
-        (no)  coverage=false lcov=false ;;
+        (lcov|yes) coverage=true ;;
+        (no)  coverage=false ;;
         (*) AC_MSG_ERROR([bad value ${enableval} for --enable-coverage]) ;;
       esac],
-     [coverage=false lcov=false])
+     [coverage=false])
    if $coverage; then
      CFLAGS="$CFLAGS -O0 --coverage"
      LDFLAGS="$LDFLAGS --coverage"
-   fi
-   if $lcov; then
-     if lcov --version >/dev/null 2>&1; then :; else
-       AC_MSG_ERROR([--enable-coverage=lcov was specified but lcov is not in \$PATH])
-     fi
-   fi
-   AC_SUBST([LCOV], [$lcov])])
+   fi])
 
 dnl Checks for --enable-ndebug and defines NDEBUG if it is specified.
 AC_DEFUN([OVS_CHECK_NDEBUG],
@@ -81,28 +74,25 @@ AC_DEFUN([OVS_CHECK_OPENSSL],
      [ssl=false])
 
    if test "$ssl" = true; then
-   dnl Make sure that pkg-config is installed.
-   m4_pattern_forbid([PKG_CHECK_MODULES])
-   PKG_CHECK_MODULES([SSL], [libssl], 
-     [HAVE_OPENSSL=yes],
-     [HAVE_OPENSSL=no
-      AC_MSG_WARN([Cannot find libssl:
-
-   $SSL_PKG_ERRORS
+       dnl Make sure that pkg-config is installed.
+       m4_pattern_forbid([PKG_CHECK_MODULES])
+       PKG_CHECK_MODULES([SSL], [libssl], 
+         [HAVE_OPENSSL=yes],
+         [HAVE_OPENSSL=no
+          AC_MSG_WARN([Cannot find libssl:
 
-   OpenFlow connections over SSL will not be supported.])])
+$SSL_PKG_ERRORS
 
+OpenFlow connections over SSL will not be supported.])])
+   else
+       HAVE_OPENSSL=no
    fi
+   AC_SUBST([HAVE_OPENSSL])
    AM_CONDITIONAL([HAVE_OPENSSL], [test "$HAVE_OPENSSL" = yes])
    if test "$HAVE_OPENSSL" = yes; then
       AC_DEFINE([HAVE_OPENSSL], [1], [Define to 1 if OpenSSL is installed.])
    fi])
 
-dnl Checks for libraries needed by lib/fault.c.
-AC_DEFUN([OVS_CHECK_FAULT_LIBS],
-  [AC_CHECK_LIB([dl], [dladdr], [FAULT_LIBS=-ldl])
-   AC_SUBST([FAULT_LIBS])])
-
 dnl Checks for libraries needed by lib/socket-util.c.
 AC_DEFUN([OVS_CHECK_SOCKET_LIBS],
   [AC_CHECK_LIB([socket], [connect])
@@ -123,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.
@@ -225,19 +216,23 @@ 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],
-  [AC_ARG_VAR([PYTHON], [path to Python 2.x])
-   AC_CACHE_CHECK(
+  [AC_CACHE_CHECK(
      [for Python 2.x for x >= 4],
      [ovs_cv_python],
      [if test -n "$PYTHON"; then
@@ -260,4 +255,69 @@ else:
           done
         done
       fi])
-   PYTHON=$ovs_cv_python])
+   AC_SUBST([HAVE_PYTHON])
+   AM_MISSING_PROG([PYTHON], [python])
+   if test $ovs_cv_python != no; then
+     PYTHON=$ovs_cv_python
+     HAVE_PYTHON=yes
+   else
+     HAVE_PYTHON=no
+   fi
+   AM_CONDITIONAL([HAVE_PYTHON], [test "$HAVE_PYTHON" = 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])])