# -*- autoconf -*-
-# Copyright (c) 2008, 2009, 2010 Nicira Networks.
+# Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
[AC_REQUIRE([AC_PROG_CC])
AC_ARG_ENABLE(
[coverage],
- [AC_HELP_STRING([--enable-coverage],
+ [AC_HELP_STRING([--enable-coverage],
[Enable gcov coverage tool.])],
[case "${enableval}" in
- (lcov|yes) coverage=true ;;
+ (yes) coverage=true ;;
(no) coverage=false ;;
(*) AC_MSG_ERROR([bad value ${enableval} for --enable-coverage]) ;;
esac],
AC_DEFUN([OVS_CHECK_NDEBUG],
[AC_ARG_ENABLE(
[ndebug],
- [AC_HELP_STRING([--enable-ndebug],
+ [AC_HELP_STRING([--enable-ndebug],
[Disable debugging features for max performance])],
[case "${enableval}" in
(yes) ndebug=true ;;
[ndebug=false])
AM_CONDITIONAL([NDEBUG], [test x$ndebug = xtrue])])
+dnl Checks for --enable-cache-time and defines CACHE_TIME if it is specified.
+AC_DEFUN([OVS_CHECK_CACHE_TIME],
+ [AC_ARG_ENABLE(
+ [cache-time],
+ [AC_HELP_STRING([--enable-cache-time],
+ [Override time caching default (for testing only)])],
+ [case "${enableval}" in
+ (yes) cache_time=1;;
+ (no) cache_time=0;;
+ (*) AC_MSG_ERROR([bad value ${enableval} for --enable-cache-time]) ;;
+ esac
+ AC_DEFINE_UNQUOTED([CACHE_TIME], [$cache_time],
+ [Define to 1 to enable time caching, to 0 to disable time caching, or
+ leave undefined to use the default (as one should
+ ordinarily do).])])])
+
+dnl Checks for ESX.
+AC_DEFUN([OVS_CHECK_ESX],
+ [AC_CHECK_HEADER([vmware.h],
+ [ESX=yes],
+ [ESX=no])
+ AM_CONDITIONAL([ESX], [test "$ESX" = yes])
+ if test "$ESX" = yes; then
+ AC_DEFINE([ESX], [1], [Define to 1 if building on ESX.])
+ fi])
+
dnl Checks for Netlink support.
AC_DEFUN([OVS_CHECK_NETLINK],
[AC_CHECK_HEADER([linux/netlink.h],
[Define to 1 if Netlink protocol is available.])
fi])
-dnl Checks for OpenSSL, if --enable-ssl is passed in.
+dnl Checks for OpenSSL.
AC_DEFUN([OVS_CHECK_OPENSSL],
[AC_ARG_ENABLE(
[ssl],
- [AC_HELP_STRING([--enable-ssl],
- [Enable ssl support (requires libssl)])],
+ [AC_HELP_STRING([--disable-ssl], [Disable OpenSSL support])],
[case "${enableval}" in
(yes) ssl=true ;;
(no) ssl=false ;;
(*) AC_MSG_ERROR([bad value ${enableval} for --enable-ssl]) ;;
esac],
- [ssl=false])
+ [ssl=check])
- if test "$ssl" = true; then
- dnl Make sure that pkg-config is installed.
- m4_pattern_forbid([PKG_CHECK_MODULES])
- PKG_CHECK_MODULES([SSL], [libssl],
+ if test "$ssl" != false; then
+ AX_CHECK_OPENSSL(
[HAVE_OPENSSL=yes],
[HAVE_OPENSSL=no
- AC_MSG_WARN([Cannot find libssl:
+ if test "$ssl" = check; then
+ AC_MSG_WARN([Cannot find openssl:
$SSL_PKG_ERRORS
-OpenFlow connections over SSL will not be supported.])])
+OpenFlow connections over SSL will not be supported.
+(You may use --disable-ssl to suppress this warning.)])
+ else
+ AC_MSG_ERROR([Cannot find openssl (use --disable-ssl to configure without SSL support)])
+ fi])
else
HAVE_OPENSSL=no
fi
dnl Checks for the directory in which to store the PKI.
AC_DEFUN([OVS_CHECK_PKIDIR],
[AC_ARG_WITH(
- [pkidir],
- AC_HELP_STRING([--with-pkidir=DIR],
- [PKI hierarchy directory [[DATADIR/openvswitch/pki]]]),
+ [pkidir],
+ AC_HELP_STRING([--with-pkidir=DIR],
+ [PKI hierarchy directory [[LOCALSTATEDIR/lib/openvswitch/pki]]]),
[PKIDIR=$withval],
- [PKIDIR='${pkgdatadir}/pki'])
+ [PKIDIR='${localstatedir}/lib/openvswitch/pki'])
AC_SUBST([PKIDIR])])
dnl Checks for the directory in which to store pidfiles.
AC_DEFUN([OVS_CHECK_RUNDIR],
[AC_ARG_WITH(
- [rundir],
- AC_HELP_STRING([--with-rundir=DIR],
+ [rundir],
+ AC_HELP_STRING([--with-rundir=DIR],
[directory used for pidfiles
[[LOCALSTATEDIR/run/openvswitch]]]),
[RUNDIR=$withval],
dnl Checks for the directory in which to store logs.
AC_DEFUN([OVS_CHECK_LOGDIR],
[AC_ARG_WITH(
- [logdir],
- AC_HELP_STRING([--with-logdir=DIR],
+ [logdir],
+ AC_HELP_STRING([--with-logdir=DIR],
[directory used for logs [[LOCALSTATEDIR/log/PACKAGE]]]),
[LOGDIR=$withval],
[LOGDIR='${localstatedir}/log/${PACKAGE}'])
AC_SUBST([LOGDIR])])
+dnl Checks for the directory in which to store the Open vSwitch database.
+AC_DEFUN([OVS_CHECK_DBDIR],
+ [AC_ARG_WITH(
+ [dbdir],
+ AC_HELP_STRING([--with-dbdir=DIR],
+ [directory used for conf.db [[SYSCONFDIR/PACKAGE]]]),
+ [DBDIR=$withval],
+ [DBDIR='${sysconfdir}/${PACKAGE}'])
+ AC_SUBST([DBDIR])])
+
+dnl Defines HAVE_BACKTRACE if backtrace() is found.
+AC_DEFUN([OVS_CHECK_BACKTRACE],
+ [AC_SEARCH_LIBS([backtrace], [execinfo ubacktrace],
+ [AC_DEFINE([HAVE_BACKTRACE], [1],
+ [Define to 1 if you have backtrace(3).])])])
+
dnl Checks for __malloc_hook, etc., supported by glibc.
AC_DEFUN([OVS_CHECK_MALLOC_HOOKS],
[AC_CACHE_CHECK(
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
[#include <malloc.h>
- ],
+ ],
[(void) __malloc_hook;
(void) __realloc_hook;
(void) __free_hook;])],
[ovs_cv_malloc_hooks=yes],
[ovs_cv_malloc_hooks=no])])
if test $ovs_cv_malloc_hooks = yes; then
- AC_DEFINE([HAVE_MALLOC_HOOKS], [1],
+ AC_DEFINE([HAVE_MALLOC_HOOKS], [1],
[Define to 1 if you have __malloc_hook, __realloc_hook, and
__free_hook in <malloc.h>.])
fi])
dnl Checks for valgrind/valgrind.h.
-AC_DEFUN([OVS_CHECK_VALGRIND],
+AC_DEFUN([OVS_CHECK_VALGRIND],
[AC_CHECK_HEADERS([valgrind/valgrind.h])])
-dnl Searches for a directory to put lockfiles for tty devices.
-dnl Defines C preprocessor variable TTY_LOCK_DIR to a quoted string
-dnl for that directory.
-AC_DEFUN([OVS_CHECK_TTY_LOCK_DIR],
- [AC_CACHE_CHECK([directory used for serial device lockfiles],
- [ovs_cv_path_tty_locks],
- [# This list of candidate directories is from minicom.
- ovs_cv_path_tty_locks=none
- for dir in /etc/locks /var/lock /usr/spool/locks \
- /var/spool/locks /var/spool/lock \
- /usr/spool/uucp /var/spool/uucp /var/run; do
- if test -d $dir; then
- ovs_cv_path_tty_locks=$dir
- break
- fi
- done])
- if test "$ovs_cv_path_tty_locks" = none; then
- AC_MSG_ERROR([cannot find a directory for tty locks])
- fi
- AC_DEFINE_UNQUOTED([TTY_LOCK_DIR], "$ovs_cv_path_tty_locks",
- [Directory used for serial device lockfiles])])
-
-dnl The following check is adapted from GNU PSPP.
-dnl It searches for the ncurses library. If it finds it, it sets
-dnl HAVE_CURSES to yes and sets NCURSES_LIBS and NCURSES_CFLAGS
-dnl appropriate. Otherwise, it sets HAVE_CURSES to no.
-AC_DEFUN([OVS_CHECK_CURSES],
- [if test "$cross_compiling" != yes; then
- AC_CHECK_PROGS([NCURSES_CONFIG], [ncurses5-config ncurses8-config])
- fi
- if test "$NCURSES_CONFIG" = ""; then
- AC_SEARCH_LIBS([tgetent], [ncurses],
- [AC_CHECK_HEADERS([term.h curses.h],
- [HAVE_CURSES=yes],
- [HAVE_CURSES=no])])
- else
- save_cflags=$CFLAGS
- CFLAGS="$CFLAGS $($NCURSES_CONFIG --cflags)"
- AC_CHECK_HEADERS([term.h curses.h],
- [HAVE_CURSES=yes],
- [HAVE_CURSES=no])
- CFLAGS=$save_cflags
- if test "$HAVE_CURSES" = yes; then
- NCURSES_LIBS=$($NCURSES_CONFIG --libs)
- NCURSES_CFLAGS=$($NCURSES_CONFIG --cflags)
- AC_SUBST(NCURSES_CFLAGS)
- AC_SUBST(NCURSES_LIBS)
- fi
- fi
- AM_CONDITIONAL([HAVE_CURSES], [test "$HAVE_CURSES" = yes])])
-
-dnl Checks for linux/vt.h.
-AC_DEFUN([OVS_CHECK_LINUX_VT_H],
- [AC_CHECK_HEADER([linux/vt.h],
- [HAVE_LINUX_VT_H=yes],
- [HAVE_LINUX_VT_H=no])
- AM_CONDITIONAL([HAVE_LINUX_VT_H], [test "$HAVE_LINUX_VT_H" = yes])
- if test "$HAVE_LINUX_VT_H" = yes; then
- AC_DEFINE([HAVE_LINUX_VT_H], [1],
- [Define to 1 if linux/vt.h is available.])
- 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_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_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
+ 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])])
+ AM_CONDITIONAL([HAVE_DOT], [test "$ovs_cv_dot" = yes])])
dnl Checks for pyuic4.
AC_DEFUN([OVS_CHECK_PYUIC4],
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
+ AM_CONDITIONAL(
+ [USE_LINKER_SECTIONS], [test $ovs_cv_use_linker_sections = yes])])
+
+dnl Checks for groff.
+AC_DEFUN([OVS_CHECK_GROFF],
+ [AC_CACHE_CHECK(
+ [for groff],
+ [ovs_cv_groff],
+ [if (groff -v) >/dev/null 2>&1; then
+ ovs_cv_groff=yes
+ else
+ ovs_cv_groff=no
+ fi])
+ AM_CONDITIONAL([HAVE_GROFF], [test "$ovs_cv_groff" = yes])])
+
+dnl Checks for thread-local storage support.
+dnl
+dnl Checks whether the compiler and linker support the C11
+dnl thread_local macro from <threads.h>, and if so defines
+dnl HAVE_THREAD_LOCAL. If not, checks whether the compiler and linker
+dnl support the GCC __thread extension, and if so defines
+dnl HAVE___THREAD.
+AC_DEFUN([OVS_CHECK_TLS],
+ [AC_CACHE_CHECK(
+ [whether $CC has <threads.h> that supports thread_local],
+ [ovs_cv_thread_local],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([#include <threads.h>
+static thread_local int var;], [return var;])],
+ [ovs_cv_thread_local=yes],
+ [ovs_cv_thread_local=no])])
+ if test $ovs_cv_thread_local = yes; then
+ AC_DEFINE([HAVE_THREAD_LOCAL], [1],
+ [Define to 1 if the C compiler and linker supports the C11
+ thread_local matcro defined in <threads.h>.])
+ else
+ AC_CACHE_CHECK(
+ [whether $CC supports __thread],
+ [ovs_cv___thread],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([static __thread int var;], [return var;])],
+ [ovs_cv___thread=yes],
+ [ovs_cv___thread=no])])
+ if test $ovs_cv___thread = yes; then
+ AC_DEFINE([HAVE___THREAD], [1],
+ [Define to 1 if the C compiler and linker supports the
+ GCC __thread extenions.])
+ fi
fi])