2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-15 14:17:18 +00:00
Files
openvswitch/m4/openvswitch.m4
Joe Stringer f12e09b7b2 libopenvswitch: Rename to libfoo-X.Y.
The current intent for Open vSwitch is to maintain libopenvswitch ABI
stability for minor versions, for example each release within the 2.7.z
series. According to the following documentation, no changes to exported
headers should be made.

http://docs.openvswitch.org/en/latest/internals/contributing/libopenvswitch-abi/

However, it is occasionally necessary to make changes to
{include/openvswitch,lib}/*.h headers to fix issues within a given
release series. The current libtool tagging mechanism in the build
system does not allow for this without creating a conflict between the
libtool 'current' version and the next minor release of OVS.

This patch modifies libopenvswitch build to include the MAJOR.MINOR
release version in the libX name, and include the libtool CURRENT and
OVS MICRO release in the libtool versioning tags to indicate library
stability. The resulting format is "libfoo-X.Y.so.CURRENT.0.Z" for OVS
release "X.Y.Z".

Developers should still attempt to avoid introducing ABI-breaking changes
within a particular OVS-X.Y release series, but if this is not possible
this patch introduced a mechanism to allow an ABI-breaking fix to be
introduced. In such a case, developers may update the libtool CURRENT
version to indicate this breakage to library users.

Signed-off-by: Joe Stringer <joe@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
2017-05-17 15:10:34 -07:00

623 lines
20 KiB
Plaintext

# -*- autoconf -*-
# Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Nicira, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
m4_include([m4/compat.m4])
dnl Checks for --enable-coverage and updates CFLAGS and LDFLAGS appropriately.
AC_DEFUN([OVS_CHECK_COVERAGE],
[AC_REQUIRE([AC_PROG_CC])
AC_ARG_ENABLE(
[coverage],
[AC_HELP_STRING([--enable-coverage],
[Enable gcov coverage tool.])],
[case "${enableval}" in
(yes) coverage=true ;;
(no) coverage=false ;;
(*) AC_MSG_ERROR([bad value ${enableval} for --enable-coverage]) ;;
esac],
[coverage=false])
if $coverage; then
# Autoconf by default puts "-g -O2" in CFLAGS. We need to remove the -O2
# option for coverage to be useful. This does it without otherwise
# interfering with anything that the user might have put there.
old_CFLAGS=$CFLAGS
CFLAGS=
for option in $old_CFLAGS; do
case $option in
(-O2) ;;
(*) CFLAGS="$CFLAGS $option" ;;
esac
done
OVS_CFLAGS="$OVS_CFLAGS --coverage"
OVS_LDFLAGS="$OVS_LDFLAGS --coverage"
fi])
dnl Checks for --enable-ndebug and defines NDEBUG if it is specified.
AC_DEFUN([OVS_CHECK_NDEBUG],
[AC_ARG_ENABLE(
[ndebug],
[AC_HELP_STRING([--enable-ndebug],
[Disable debugging features for max performance])],
[case "${enableval}" in
(yes) ndebug=true ;;
(no) ndebug=false ;;
(*) AC_MSG_ERROR([bad value ${enableval} for --enable-ndebug]) ;;
esac],
[ndebug=false])
AM_CONDITIONAL([NDEBUG], [test x$ndebug = xtrue])])
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 MSVC x64 compiler.
AC_DEFUN([OVS_CHECK_WIN64],
[AC_CACHE_CHECK(
[for MSVC x64 compiler],
[cl_cv_x64],
[dnl "cl" writes x64 output to stdin:
if (cl) 2>&1 | grep 'x64' >/dev/null 2>&1; then
cl_cv_x64=yes
MSVC64_LDFLAGS=" /MACHINE:X64 "
else
cl_cv_x64=no
MSVC64_LDFLAGS=""
fi])
AC_SUBST([MSVC64_LDFLAGS])
])
dnl Checks for WINDOWS.
AC_DEFUN([OVS_CHECK_WIN32],
[AC_CHECK_HEADER([windows.h],
[WIN32=yes],
[WIN32=no])
AM_CONDITIONAL([WIN32], [test "$WIN32" = yes])
if test "$WIN32" = yes; then
AC_ARG_WITH([pthread],
[AS_HELP_STRING([--with-pthread=DIR],
[root of the pthread-win32 directory])],
[
case "$withval" in
"" | y | ye | yes | n | no)
AC_MSG_ERROR([Invalid --with-pthread value])
;;
*)
if (cl) 2>&1 | grep 'x64' >/dev/null 2>&1; then
cl_cv_x64=yes
else
cl_cv_x64=no
fi
if test "$cl_cv_x64" = yes; then
PTHREAD_WIN32_DIR=$withval/lib/x64
PTHREAD_WIN32_DIR_DLL=/$(echo ${withval} | ${SED} -e 's/://')/dll/x64
PTHREAD_WIN32_DIR_DLL_WIN_FORM=$withval/dll/x64
else
PTHREAD_WIN32_DIR=$withval/lib/x86
PTHREAD_WIN32_DIR_DLL=/$(echo ${withval} | ${SED} -e 's/://')/dll/x86
PTHREAD_WIN32_DIR_DLL_WIN_FORM=$withval/dll/x86
fi
PTHREAD_INCLUDES=-I$withval/include
PTHREAD_LDFLAGS=-L$PTHREAD_WIN32_DIR
PTHREAD_LIBS="-lpthreadVC2"
AC_SUBST([PTHREAD_WIN32_DIR_DLL_WIN_FORM])
AC_SUBST([PTHREAD_WIN32_DIR_DLL])
AC_SUBST([PTHREAD_INCLUDES])
AC_SUBST([PTHREAD_LDFLAGS])
AC_SUBST([PTHREAD_LIBS])
;;
esac
], [
AC_MSG_ERROR([pthread directory not specified])
]
)
AC_ARG_WITH([debug],
[AS_HELP_STRING([--with-debug],
[Build without compiler optimizations])],
[
MSVC_CFLAGS="-O0"
AC_SUBST([MSVC_CFLAGS])
], [
MSVC_CFLAGS="-O2"
AC_SUBST([MSVC_CFLAGS])
]
)
AC_DEFINE([WIN32], [1], [Define to 1 if building on WIN32.])
AH_BOTTOM([#ifdef WIN32
#include "include/windows/windefs.h"
#endif])
fi])
dnl OVS_CHECK_WINDOWS
dnl
dnl Configure Visual Studio solution build
AC_DEFUN([OVS_CHECK_VISUAL_STUDIO_DDK], [
AC_ARG_WITH([vstudiotarget],
[AS_HELP_STRING([--with-vstudiotarget=target_type],
[Target type: Debug/Release])],
[
case "$withval" in
"Release") ;;
"Debug") ;;
*) AC_MSG_ERROR([No valid Visual Studio configuration found]) ;;
esac
VSTUDIO_CONFIG=$withval
], [
VSTUDIO_CONFIG=
]
)
AC_SUBST([VSTUDIO_CONFIG])
AC_DEFINE([VSTUDIO_DDK], [1], [System uses the Visual Studio build target.])
AM_CONDITIONAL([VSTUDIO_DDK], [test -n "$VSTUDIO_CONFIG"])
])
dnl Checks for Netlink support.
AC_DEFUN([OVS_CHECK_NETLINK],
[AC_CHECK_HEADER([linux/netlink.h],
[HAVE_NETLINK=yes],
[HAVE_NETLINK=no],
[#include <sys/socket.h>
])
AM_CONDITIONAL([HAVE_NETLINK], [test "$HAVE_NETLINK" = yes])
if test "$HAVE_NETLINK" = yes; then
AC_DEFINE([HAVE_NETLINK], [1],
[Define to 1 if Netlink protocol is available.])
fi])
dnl Checks for libcap-ng.
AC_DEFUN([OVS_CHECK_LIBCAPNG],
[AC_ARG_ENABLE(
[libcapng],
[AC_HELP_STRING([--disable-libcapng], [Disable Linux capability support])],
[case "${enableval}" in
(yes) libcapng=true ;;
(no) libcapng=false ;;
(*) AC_MSG_ERROR([bad value ${enableval} for --enable-libcapng]) ;;
esac],
[libcapng=check])
if test "$libcapng" != false; then
AC_CHECK_LIB([cap-ng], [capng_clear], [HAVE_LIBCAPNG=yes])
if test "$HAVE_LIBCAPNG" != yes; then
if test "$libcapng" = true ; then
AC_MSG_ERROR([libcap-ng support requested, but not found])
fi
if test "$libcapng" = check ; then
AC_MSG_WARN([cannot find libcap-ng.
--user option will not be supported on Linux.
(you may use --disable-libcapng to suppress this warning). ])
fi
fi
fi
AC_SUBST([HAVE_LIBCAPNG])
AM_CONDITIONAL([HAVE_LIBCAPNG], [test "$HAVE_LIBCAPNG" = yes])
if test "$HAVE_LIBCAPNG" = yes; then
AC_DEFINE([HAVE_LIBCAPNG], [1],
[Define to 1 if libcap-ng is available.])
CAPNG_LDADD="-lcap-ng"
AC_SUBST([CAPNG_LDADD])
fi])
dnl Checks for OpenSSL.
AC_DEFUN([OVS_CHECK_OPENSSL],
[AC_ARG_ENABLE(
[ssl],
[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=check])
if test "$ssl" != false; then
AX_CHECK_OPENSSL(
[HAVE_OPENSSL=yes],
[HAVE_OPENSSL=no
if test "$ssl" = check; then
AC_MSG_WARN([Cannot find openssl:
$SSL_PKG_ERRORS
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
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/socket-util.c.
AC_DEFUN([OVS_CHECK_SOCKET_LIBS],
[AC_CHECK_LIB([socket], [connect])
AC_SEARCH_LIBS([gethostbyname], [resolv])])
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 [[LOCALSTATEDIR/lib/openvswitch/pki]]]),
[PKIDIR=$withval],
[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],
[directory used for pidfiles
[[LOCALSTATEDIR/run/openvswitch]]]),
[RUNDIR=$withval],
[RUNDIR='${localstatedir}/run/openvswitch'])
AC_SUBST([RUNDIR])])
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],
[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 Defines HAVE_PERF_EVENT if linux/perf_event.h is found.
AC_DEFUN([OVS_CHECK_PERF_EVENT],
[AC_CHECK_HEADERS([linux/perf_event.h])])
dnl Checks for valgrind/valgrind.h.
AC_DEFUN([OVS_CHECK_VALGRIND],
[AC_CHECK_HEADERS([valgrind/valgrind.h])])
dnl Checks for Python 2.x, x >= 7.
AC_DEFUN([OVS_CHECK_PYTHON],
[AC_CACHE_CHECK(
[for Python 2.x for x >= 7],
[ovs_cv_python],
[if test -n "$PYTHON"; then
ovs_cv_python=$PYTHON
else
ovs_cv_python=no
for binary in python python2.7; do
ovs_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for dir in $PATH; do
IFS=$ovs_save_IFS
test -z "$dir" && dir=.
if test -x "$dir"/"$binary" && "$dir"/"$binary" -c 'import sys
if sys.hexversion >= 0x02070000 and sys.hexversion < 0x03000000:
sys.exit(0)
else:
sys.exit(1)'; then
ovs_cv_python=$dir/$binary
break 2
fi
done
done
fi])
# Set $PYTHON from cache variable.
if test $ovs_cv_python = no; then
AC_MSG_ERROR([cannot find python 2.7 or higher.])
fi
AM_MISSING_PROG([PYTHON], [python])
PYTHON=$ovs_cv_python
# HAVE_PYTHON is always true. (Python has not always been a build
# requirement, so this variable is now obsolete.)
AC_SUBST([HAVE_PYTHON])
HAVE_PYTHON=yes
AM_CONDITIONAL([HAVE_PYTHON], [test "$HAVE_PYTHON" = yes])
AC_MSG_CHECKING([whether $PYTHON has six library])
if ! $PYTHON -c 'import six ; six.moves.range' >&AS_MESSAGE_LOG_FD 2>&1; then
AC_MSG_ERROR([Missing Python six library or version too old.])
fi
AC_MSG_RESULT([yes])])
dnl Checks for Python 3.x, x >= 4.
AC_DEFUN([OVS_CHECK_PYTHON3],
[AC_CACHE_CHECK(
[for Python 3.x for x >= 4],
[ovs_cv_python3],
[if test -n "$PYTHON3"; then
ovs_cv_python3=$PYTHON3
else
ovs_cv_python3=no
for binary in python3 python3.4; do
ovs_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for dir in $PATH; do
IFS=$ovs_save_IFS
test -z "$dir" && dir=.
if test -x "$dir"/"$binary" && "$dir"/"$binary" -c 'import sys
if sys.hexversion >= 0x03040000 and sys.hexversion < 0x04000000:
sys.exit(0)
else:
sys.exit(1)'; then
ovs_cv_python3=$dir/$binary
break 2
fi
done
done
if test $ovs_cv_python3 != no; then
if test -x "$ovs_cv_python3" && ! "$ovs_cv_python3" -c 'import six' >/dev/null 2>&1; then
ovs_cv_python3=no
AC_MSG_WARN([Missing Python six library.])
fi
fi
fi])
AC_SUBST([HAVE_PYTHON3])
AM_MISSING_PROG([PYTHON3], [python3])
if test $ovs_cv_python3 != no; then
PYTHON3=$ovs_cv_python3
HAVE_PYTHON3=yes
else
HAVE_PYTHON3=no
fi
AM_CONDITIONAL([HAVE_PYTHON3], [test "$HAVE_PYTHON3" = yes])])
dnl Checks for flake8.
AC_DEFUN([OVS_CHECK_FLAKE8],
[AC_CACHE_CHECK(
[for flake8],
[ovs_cv_flake8],
[if flake8 --version >/dev/null 2>&1; then
ovs_cv_flake8=yes
else
ovs_cv_flake8=no
fi])
AM_CONDITIONAL([HAVE_FLAKE8], [test "$ovs_cv_flake8" = yes])])
dnl Checks for sphinx.
AC_DEFUN([OVS_CHECK_SPHINX],
[AC_CACHE_CHECK(
[for sphinx],
[ovs_cv_sphinx],
[if type sphinx-build >/dev/null 2>&1; then
ovs_cv_sphinx=yes
else
ovs_cv_sphinx=no
fi])
AM_CONDITIONAL([HAVE_SPHINX], [test "$ovs_cv_sphinx" = 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])
AM_CONDITIONAL([HAVE_DOT], [test "$ovs_cv_dot" = 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])
dnl OVS_CHECK_ATOMIC_LIBS
dnl
dnl Check to see if -latomic is need for GCC atomic built-ins.
AC_DEFUN([OVS_CHECK_ATOMIC_LIBS],
[AC_SEARCH_LIBS([__atomic_load_8], [atomic])])
dnl OVS_CHECK_GCC4_ATOMICS
dnl
dnl Checks whether the compiler and linker support GCC 4.0+ atomic built-ins.
dnl A compile-time only check is not enough because the compiler defers
dnl unimplemented built-ins to libgcc, which sometimes also lacks
dnl implementations.
AC_DEFUN([OVS_CHECK_GCC4_ATOMICS],
[AC_CACHE_CHECK(
[whether $CC supports GCC 4.0+ atomic built-ins],
[ovs_cv_gcc4_atomics],
[AC_LINK_IFELSE(
[AC_LANG_PROGRAM([[#include <stdlib.h>
#define ovs_assert(expr) if (!(expr)) abort();
#define TEST_ATOMIC_TYPE(TYPE) \
{ \
TYPE x = 1; \
TYPE orig; \
\
__sync_synchronize(); \
ovs_assert(x == 1); \
\
__sync_synchronize(); \
x = 3; \
__sync_synchronize(); \
ovs_assert(x == 3); \
\
orig = __sync_fetch_and_add(&x, 1); \
ovs_assert(orig == 3); \
__sync_synchronize(); \
ovs_assert(x == 4); \
\
orig = __sync_fetch_and_sub(&x, 2); \
ovs_assert(orig == 4); \
__sync_synchronize(); \
ovs_assert(x == 2); \
\
orig = __sync_fetch_and_or(&x, 6); \
ovs_assert(orig == 2); \
__sync_synchronize(); \
ovs_assert(x == 6); \
\
orig = __sync_fetch_and_and(&x, 10); \
ovs_assert(orig == 6); \
__sync_synchronize(); \
ovs_assert(x == 2); \
\
orig = __sync_fetch_and_xor(&x, 10); \
ovs_assert(orig == 2); \
__sync_synchronize(); \
ovs_assert(x == 8); \
}]], [dnl
TEST_ATOMIC_TYPE(char);
TEST_ATOMIC_TYPE(unsigned char);
TEST_ATOMIC_TYPE(signed char);
TEST_ATOMIC_TYPE(short);
TEST_ATOMIC_TYPE(unsigned short);
TEST_ATOMIC_TYPE(int);
TEST_ATOMIC_TYPE(unsigned int);
TEST_ATOMIC_TYPE(long int);
TEST_ATOMIC_TYPE(unsigned long int);
TEST_ATOMIC_TYPE(long long int);
TEST_ATOMIC_TYPE(unsigned long long int);
])],
[ovs_cv_gcc4_atomics=yes],
[ovs_cv_gcc4_atomics=no])])
if test $ovs_cv_gcc4_atomics = yes; then
AC_DEFINE([HAVE_GCC4_ATOMICS], [1],
[Define to 1 if the C compiler and linker supports the GCC 4.0+
atomic built-ins.])
fi])
dnl OVS_CHECK_ATOMIC_ALWAYS_LOCK_FREE(SIZE)
dnl
dnl Checks __atomic_always_lock_free(SIZE, 0)
AC_DEFUN([OVS_CHECK_ATOMIC_ALWAYS_LOCK_FREE],
[AC_CACHE_CHECK(
[value of __atomic_always_lock_free($1)],
[ovs_cv_atomic_always_lock_free_$1],
[AC_COMPUTE_INT(
[ovs_cv_atomic_always_lock_free_$1],
[__atomic_always_lock_free($1, 0)],
[],
[ovs_cv_atomic_always_lock_free_$1=unsupported])])
if test ovs_cv_atomic_always_lock_free_$1 != unsupported; then
AC_DEFINE_UNQUOTED(
[ATOMIC_ALWAYS_LOCK_FREE_$1B],
[$ovs_cv_atomic_always_lock_free_$1],
[If the C compiler is GCC 4.7 or later, define to the return value of
__atomic_always_lock_free($1, 0). If the C compiler is not GCC or is
an older version of GCC, the value does not matter.])
fi])
dnl OVS_CHECK_POSIX_AIO
AC_DEFUN([OVS_CHECK_POSIX_AIO],
[AC_SEARCH_LIBS([aio_write], [rt])
AM_CONDITIONAL([HAVE_POSIX_AIO], [test "$ac_cv_search_aio_write" != no])])
dnl OVS_CHECK_INCLUDE_NEXT
AC_DEFUN([OVS_CHECK_INCLUDE_NEXT],
[AC_REQUIRE([gl_CHECK_NEXT_HEADERS])
gl_CHECK_NEXT_HEADERS([$1])])
dnl OVS_CHECK_PRAGMA_MESSAGE
AC_DEFUN([OVS_CHECK_PRAGMA_MESSAGE],
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[[_Pragma("message(\"Checking for pragma message\")")
]])],
[AC_DEFINE(HAVE_PRAGMA_MESSAGE,1,[Define if compiler supports #pragma
message directive])])
])
dnl OVS_LIBTOOL_VERSIONS sets the major, minor, micro version information for
dnl OVS_LTINFO variable. This variable locks libtool information for shared
dnl objects, allowing multiple versions with different ABIs to coexist.
AC_DEFUN([OVS_LIBTOOL_VERSIONS],
[AC_MSG_CHECKING(linker output version information)
OVS_MAJOR=`echo "$PACKAGE_VERSION" | sed -e 's/[[.]].*//'`
OVS_MINOR=`echo "$PACKAGE_VERSION" | sed -e "s/^$OVS_MAJOR//" -e 's/^.//' -e 's/[[.]].*//'`
OVS_MICRO=`echo "$PACKAGE_VERSION" | sed -e "s/^$OVS_MAJOR.$OVS_MINOR//" -e 's/^.//' -e 's/[[^0-9]].*//'`
OVS_LT_RELINFO="-release $OVS_MAJOR.$OVS_MINOR"
OVS_LT_VERINFO="-version-info $LT_CURRENT:$OVS_MICRO"
OVS_LTINFO="$OVS_LT_RELINFO $OVS_LT_VERINFO"
AC_MSG_RESULT([libX-$OVS_MAJOR.$OVS_MINOR.so.$LT_CURRENT.0.$OVS_MICRO)])
AC_SUBST(OVS_LTINFO)
])