2009-07-29 12:07:54 +02:00
|
|
|
# -*- Autoconf -*-
|
|
|
|
# Process this file with autoconf to produce a configure script.
|
|
|
|
AC_PREREQ(2.61)
|
2010-02-11 17:49:40 +01:00
|
|
|
#
|
2010-10-15 15:05:54 +02:00
|
|
|
# The 0MQ version number is extracted from include/zmq.h using
|
|
|
|
# the version.sh script. Hence, it should be updated there.
|
2010-02-11 17:49:40 +01:00
|
|
|
# The version in git should reflect the *next* version planned.
|
|
|
|
#
|
2011-02-07 15:06:20 +01:00
|
|
|
AC_INIT([zeromq],[m4_esyscmd([./version.sh])],[zeromq-dev@lists.zeromq.org])
|
2010-02-11 17:49:40 +01:00
|
|
|
|
2009-07-29 12:07:54 +02:00
|
|
|
AC_CONFIG_AUX_DIR(config)
|
2010-01-05 13:46:35 +01:00
|
|
|
AC_CONFIG_MACRO_DIR(config)
|
2013-01-18 01:00:38 +01:00
|
|
|
AC_CONFIG_HEADERS([src/platform.hpp])
|
2010-09-04 17:26:36 +02:00
|
|
|
AM_INIT_AUTOMAKE(tar-ustar dist-zip foreign)
|
2011-03-31 18:42:09 +02:00
|
|
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
2009-07-29 12:07:54 +02:00
|
|
|
|
2010-10-11 16:32:27 +02:00
|
|
|
# This lets us use PACKAGE_VERSION in Makefiles
|
|
|
|
AC_SUBST(PACKAGE_VERSION)
|
|
|
|
|
2010-02-11 17:49:40 +01:00
|
|
|
# Libtool -version-info (ABI version)
|
|
|
|
#
|
2010-12-01 11:11:25 +01:00
|
|
|
# Don't change this unless you know exactly what you're doing and have read and
|
|
|
|
# understand:
|
2010-02-11 17:49:40 +01:00
|
|
|
# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
|
|
|
|
#
|
2010-12-01 11:11:25 +01:00
|
|
|
# Changes:
|
|
|
|
#
|
2011-11-09 15:39:33 +01:00
|
|
|
# ZeroMQ versions prior to 2.1.0 use 0:0:0 (undefined)
|
|
|
|
# ZeroMQ versions 2.1.x: 1:0:0 (ABI version 1)
|
|
|
|
# ZeroMQ version 3.0: 2:0:0 (ABI version 2)
|
|
|
|
# ZeroMQ version 3.1: 3:0:0 (ABI version 3)
|
2013-09-24 09:10:39 +02:00
|
|
|
# ZeroMQ version 4.0: 4:0:1 (ABI version 4)
|
2010-12-01 11:11:25 +01:00
|
|
|
#
|
|
|
|
# libzmq -version-info current:revision:age
|
2013-09-24 09:10:39 +02:00
|
|
|
LTVER="4:0:1"
|
2009-09-08 14:54:04 +02:00
|
|
|
AC_SUBST(LTVER)
|
|
|
|
|
2010-12-18 12:13:10 +01:00
|
|
|
# Take a copy of original flags
|
|
|
|
ZMQ_ORIG_CFLAGS="${CFLAGS:-none}"
|
|
|
|
ZMQ_ORIG_CPPFLAGS="${CPPFLAGS:-none}"
|
|
|
|
ZMQ_ORIG_CXXFLAGS="${CXXFLAGS:-none}"
|
|
|
|
|
2009-07-29 12:07:54 +02:00
|
|
|
# Checks for programs.
|
2010-04-10 16:18:34 +02:00
|
|
|
AC_PROG_CC
|
2010-11-15 17:02:36 +01:00
|
|
|
AC_PROG_CC_C99
|
2009-07-29 12:07:54 +02:00
|
|
|
AC_PROG_CXX
|
2010-04-10 16:18:34 +02:00
|
|
|
AM_PROG_CC_C_O
|
2009-09-08 14:54:04 +02:00
|
|
|
AC_PROG_SED
|
|
|
|
AC_PROG_AWK
|
2009-07-29 12:07:54 +02:00
|
|
|
|
2010-11-17 15:06:51 +01:00
|
|
|
# Libtool configuration for different targets. See acinclude.m4
|
2011-03-31 18:42:09 +02:00
|
|
|
AC_ARG_VAR([XMLTO], [Path to xmlto command])
|
|
|
|
AC_PATH_PROG([XMLTO], [xmlto])
|
|
|
|
AC_ARG_VAR([ASCIIDOC], [Path to asciidoc command])
|
|
|
|
AC_PATH_PROG([ASCIIDOC], [asciidoc])
|
2011-04-02 22:50:46 +02:00
|
|
|
LIBZMQ_CONFIG_LIBTOOL
|
2010-11-18 11:51:27 +01:00
|
|
|
AC_LIBTOOL_WIN32_DLL
|
|
|
|
AC_PROG_LIBTOOL
|
2010-11-17 15:06:51 +01:00
|
|
|
|
2010-12-01 10:33:07 +01:00
|
|
|
# Check whether to build a with debug symbols
|
2011-04-02 22:50:46 +02:00
|
|
|
LIBZMQ_CHECK_ENABLE_DEBUG
|
2010-04-10 16:18:34 +02:00
|
|
|
|
2011-04-02 22:49:41 +02:00
|
|
|
# Check wheter to enable code coverage
|
2011-04-02 22:50:46 +02:00
|
|
|
LIBZMQ_WITH_GCOV
|
2011-04-02 22:49:41 +02:00
|
|
|
|
2013-11-01 14:59:31 +01:00
|
|
|
AC_MSG_CHECKING([if TIPC is available and supports nonblocking connect])
|
|
|
|
AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <fcntl.h>
|
|
|
|
#include <errno.h>
|
|
|
|
#include <sys/socket.h>
|
|
|
|
#include <linux/tipc.h>
|
|
|
|
]],[[
|
|
|
|
struct sockaddr_tipc topsrv;
|
|
|
|
int sd = socket(AF_TIPC, SOCK_SEQPACKET, 0);
|
|
|
|
if (sd == -EAFNOSUPPORT) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
memset(&topsrv, 0, sizeof(topsrv));
|
|
|
|
topsrv.family = AF_TIPC;
|
|
|
|
topsrv.addrtype = TIPC_ADDR_NAME;
|
|
|
|
topsrv.addr.name.name.type = TIPC_TOP_SRV;
|
|
|
|
topsrv.addr.name.name.instance = TIPC_TOP_SRV;
|
|
|
|
fcntl(sd, F_SETFL, O_NONBLOCK);
|
|
|
|
if (connect(sd, (struct sockaddr *)&topsrv,
|
|
|
|
sizeof(topsrv)) != 0) {
|
|
|
|
if (errno != EINPROGRESS)
|
|
|
|
return -1;
|
|
|
|
}]])
|
|
|
|
],
|
|
|
|
[libzmq_tipc_support=yes],
|
|
|
|
[libzmq_tipc_support=no],
|
|
|
|
[libzmq_tipc_support=no])
|
|
|
|
AC_MSG_RESULT([$libzmq_tipc_support])
|
|
|
|
|
2013-09-24 00:07:43 +02:00
|
|
|
# Allow libsodium to be installed in a custom path:
|
|
|
|
|
|
|
|
AC_ARG_WITH([libsodium],
|
|
|
|
[AS_HELP_STRING([--with-libsodium],
|
|
|
|
[Specify libsodium prefix])],
|
|
|
|
[zmq_search_libsodium="yes"],
|
|
|
|
[])
|
|
|
|
|
|
|
|
if test "x$zmq_search_libsodium" = "xyes"; then
|
|
|
|
if test -r "${with_libsodium}/include/sodium.h"; then
|
2013-09-29 13:19:50 +02:00
|
|
|
CPPFLAGS="-I${with_libsodium}/include ${CPPFLAGS}"
|
2013-09-24 00:07:43 +02:00
|
|
|
LDFLAGS="-L${with_libsodium}/lib ${LDFLAGS}"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_ARG_WITH([libsodium-include-dir],
|
|
|
|
[AS_HELP_STRING([--with-libsodium-include-dir],
|
|
|
|
[Specify libsodium include prefix])],
|
|
|
|
[zmq_search_libsodium_include="yes"],
|
|
|
|
[])
|
|
|
|
|
|
|
|
if test "x$zmq_search_libsodium_include" = "xyes"; then
|
|
|
|
if test -r "${with_libsodium_include_dir}/sodium.h"; then
|
2013-09-29 13:19:50 +02:00
|
|
|
CPPFLAGS="-I${with_libsodium_include_dir}/include ${CPPFLAGS}"
|
2013-09-24 00:07:43 +02:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_ARG_WITH([libsodium_lib_dir],
|
|
|
|
[AS_HELP_STRING([--with-libsodium-lib-dir],
|
|
|
|
[Specify libsodium library prefix])],
|
|
|
|
[zmq_search_libsodium_lib="yes"],
|
|
|
|
[])
|
|
|
|
|
|
|
|
if test "x$zmq_search_libsodium_lib" = "xyes"; then
|
|
|
|
if test -r "${with_libsodium_lib_dir}/libsodium.{a|so|dylib}"; then
|
|
|
|
LDFLAGS="-L${with_libsodium}/lib ${LDFLAGS}"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2013-10-24 03:31:02 +02:00
|
|
|
AC_ARG_WITH([relaxed],
|
|
|
|
[AS_HELP_STRING([--with-relaxed],
|
|
|
|
[Switch off pedantic compiler])],
|
|
|
|
[zmq_relaxed="yes"],
|
|
|
|
[])
|
|
|
|
|
|
|
|
if test "x$zmq_relaxed" = "xyes"; then
|
|
|
|
libzmq_pedantic="no"
|
|
|
|
else
|
|
|
|
libzmq_pedantic="yes"
|
|
|
|
fi
|
2009-09-10 11:21:05 +02:00
|
|
|
|
2010-11-15 17:02:36 +01:00
|
|
|
# By default compiling with -Werror except OSX.
|
2011-04-02 22:50:46 +02:00
|
|
|
libzmq_werror="yes"
|
2009-09-10 11:21:05 +02:00
|
|
|
|
2010-12-07 11:14:46 +01:00
|
|
|
# By default use DSO visibility
|
2011-04-02 22:50:46 +02:00
|
|
|
libzmq_dso_visibility="yes"
|
2010-12-07 11:14:46 +01:00
|
|
|
|
2013-03-08 14:22:58 +01:00
|
|
|
# Platform specific checks
|
2011-04-02 22:50:46 +02:00
|
|
|
libzmq_on_mingw32="no"
|
2012-07-03 12:20:37 +02:00
|
|
|
libzmq_on_android="no"
|
2013-10-04 01:35:30 +02:00
|
|
|
libzmq_on_linux="no"
|
2009-10-06 12:57:24 +02:00
|
|
|
|
2010-02-17 15:40:26 +01:00
|
|
|
# Set some default features required by 0MQ code.
|
2010-02-18 13:46:00 +01:00
|
|
|
CPPFLAGS="-D_REENTRANT -D_THREAD_SAFE $CPPFLAGS"
|
2010-02-17 15:40:26 +01:00
|
|
|
|
2010-12-01 10:33:07 +01:00
|
|
|
# For host type checks
|
|
|
|
AC_CANONICAL_HOST
|
|
|
|
|
2010-02-17 15:40:26 +01:00
|
|
|
# OS-specific tests
|
2009-07-29 12:07:54 +02:00
|
|
|
case "${host_os}" in
|
|
|
|
*linux*)
|
2010-10-15 10:43:22 +02:00
|
|
|
# Define on Linux to enable all library features. Define if using a gnu compiler
|
2010-12-01 10:33:07 +01:00
|
|
|
if test "x$GXX" = "xyes"; then
|
2010-10-15 10:43:22 +02:00
|
|
|
CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS"
|
|
|
|
fi
|
2009-08-03 11:30:13 +02:00
|
|
|
AC_DEFINE(ZMQ_HAVE_LINUX, 1, [Have Linux OS])
|
2013-10-04 01:35:30 +02:00
|
|
|
libzmq_on_linux="yes"
|
2011-08-15 19:09:04 +02:00
|
|
|
|
2013-11-01 14:59:31 +01:00
|
|
|
if test "x$libzmq_tipc_support" = "xyes"; then
|
|
|
|
AC_DEFINE(ZMQ_HAVE_TIPC, 1, [Have TIPC support])
|
|
|
|
fi
|
2011-08-15 19:09:04 +02:00
|
|
|
case "${host_os}" in
|
|
|
|
*android*)
|
|
|
|
AC_DEFINE(ZMQ_HAVE_ANDROID, 1, [Have Android OS])
|
2012-07-03 12:20:37 +02:00
|
|
|
libzmq_on_android="yes"
|
2011-08-15 19:09:04 +02:00
|
|
|
;;
|
|
|
|
esac
|
2009-07-29 12:07:54 +02:00
|
|
|
;;
|
|
|
|
*solaris*)
|
2010-02-18 13:46:00 +01:00
|
|
|
# Define on Solaris to enable all library features
|
2010-04-10 16:18:34 +02:00
|
|
|
CPPFLAGS="-D_PTHREADS $CPPFLAGS"
|
2009-08-03 11:30:13 +02:00
|
|
|
AC_DEFINE(ZMQ_HAVE_SOLARIS, 1, [Have Solaris OS])
|
2010-11-15 17:02:36 +01:00
|
|
|
AC_CHECK_LIB(socket, socket)
|
|
|
|
AC_CHECK_LIB(nsl, gethostbyname)
|
2010-02-18 19:27:35 +01:00
|
|
|
AC_MSG_CHECKING([whether atomic operations can be used])
|
2009-07-29 12:07:54 +02:00
|
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
|
|
|
[[#include <atomic.h>]],
|
|
|
|
[[uint32_t value;
|
|
|
|
atomic_cas_32 (&value, 0, 0);
|
|
|
|
return 0;]])],
|
|
|
|
[solaris_has_atomic=yes],
|
|
|
|
[solaris_has_atomic=no])
|
|
|
|
AC_MSG_RESULT([$solaris_has_atomic])
|
|
|
|
# Solaris 8 does not have atomic operations exported to user space.
|
|
|
|
if test "x$solaris_has_atomic" = "xno"; then
|
2009-08-03 11:30:13 +02:00
|
|
|
AC_DEFINE(ZMQ_FORCE_MUTEXES, 1, [Force to use mutexes])
|
2009-07-29 12:07:54 +02:00
|
|
|
fi
|
2013-09-27 13:12:16 +02:00
|
|
|
# ssp library is required for libsodium on Solaris-like systems
|
|
|
|
LDFLAGS="-lssp $LDFLAGS"
|
2013-09-27 13:20:09 +02:00
|
|
|
CPPFLAGS="$CPPFLAGS -Wno-long-long"
|
2009-07-29 12:07:54 +02:00
|
|
|
;;
|
|
|
|
*freebsd*)
|
2010-02-18 13:46:00 +01:00
|
|
|
# Define on FreeBSD to enable all library features
|
|
|
|
CPPFLAGS="-D__BSD_VISIBLE $CPPFLAGS"
|
2009-08-03 11:30:13 +02:00
|
|
|
AC_DEFINE(ZMQ_HAVE_FREEBSD, 1, [Have FreeBSD OS])
|
2009-07-29 12:07:54 +02:00
|
|
|
;;
|
|
|
|
*darwin*)
|
2010-02-18 13:46:00 +01:00
|
|
|
# Define on Darwin to enable all library features
|
|
|
|
CPPFLAGS="-D_DARWIN_C_SOURCE $CPPFLAGS"
|
2011-04-02 22:50:46 +02:00
|
|
|
libzmq_pedantic="no"
|
|
|
|
libzmq_werror="no"
|
2009-08-03 11:30:13 +02:00
|
|
|
AC_DEFINE(ZMQ_HAVE_OSX, 1, [Have DarwinOSX OS])
|
2010-12-01 10:33:07 +01:00
|
|
|
AC_LANG_PUSH([C++])
|
2011-04-02 22:50:46 +02:00
|
|
|
LIBZMQ_CHECK_LANG_FLAG_PREPEND([-Wno-uninitialized])
|
2010-12-01 10:33:07 +01:00
|
|
|
AC_LANG_POP([C++])
|
2009-07-29 12:07:54 +02:00
|
|
|
;;
|
2010-02-18 19:38:15 +01:00
|
|
|
*netbsd*)
|
|
|
|
# Define on NetBSD to enable all library features
|
|
|
|
CPPFLAGS="-D_NETBSD_SOURCE $CPPFLAGS"
|
|
|
|
AC_DEFINE(ZMQ_HAVE_NETBSD, 1, [Have NetBSD OS])
|
2010-02-22 18:16:40 +01:00
|
|
|
# NetBSD 5.0 and newer provides atomic operations but we can
|
|
|
|
# only use these on systems where PR #42842 has been fixed so
|
|
|
|
# we must try and link a test program using C++.
|
2011-04-02 22:50:46 +02:00
|
|
|
libzmq_netbsd_has_atomic=no
|
2010-02-22 18:16:40 +01:00
|
|
|
AC_MSG_CHECKING([whether atomic operations can be used])
|
|
|
|
AC_LANG_PUSH([C++])
|
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM(
|
|
|
|
[[#include <atomic.h>]],
|
|
|
|
[[uint32_t value;
|
|
|
|
atomic_cas_32 (&value, 0, 0);
|
|
|
|
return 0;]])],
|
2011-04-02 22:50:46 +02:00
|
|
|
[libzmq_netbsd_has_atomic=yes],
|
|
|
|
[libzmq_netbsd_has_atomic=no])
|
2010-02-22 18:16:40 +01:00
|
|
|
AC_LANG_POP([C++])
|
2011-04-02 22:50:46 +02:00
|
|
|
AC_MSG_RESULT([$libzmq_netbsd_has_atomic])
|
|
|
|
if test "x$libzmq_netbsd_has_atomic" = "xno"; then
|
2010-02-18 19:38:15 +01:00
|
|
|
AC_DEFINE(ZMQ_FORCE_MUTEXES, 1, [Force to use mutexes])
|
|
|
|
fi
|
|
|
|
;;
|
2009-07-29 12:07:54 +02:00
|
|
|
*openbsd*)
|
2010-02-18 13:46:00 +01:00
|
|
|
# Define on OpenBSD to enable all library features
|
|
|
|
CPPFLAGS="-D_BSD_SOURCE $CPPFLAGS"
|
2009-08-03 11:30:13 +02:00
|
|
|
AC_DEFINE(ZMQ_HAVE_OPENBSD, 1, [Have OpenBSD OS])
|
2009-07-29 12:07:54 +02:00
|
|
|
;;
|
|
|
|
*nto-qnx*)
|
2011-04-02 22:50:46 +02:00
|
|
|
libzmq_pedantic="no"
|
2009-08-03 11:30:13 +02:00
|
|
|
AC_DEFINE(ZMQ_HAVE_QNXNTO, 1, [Have QNX Neutrino OS])
|
2010-11-15 17:02:36 +01:00
|
|
|
AC_CHECK_LIB(socket, socket)
|
2009-07-29 12:07:54 +02:00
|
|
|
;;
|
|
|
|
*aix*)
|
2009-08-03 11:30:13 +02:00
|
|
|
AC_DEFINE(ZMQ_HAVE_AIX, 1, [Have AIX OS])
|
2009-07-29 12:07:54 +02:00
|
|
|
;;
|
|
|
|
*hpux*)
|
2010-02-18 13:46:00 +01:00
|
|
|
# Define on HP-UX to enable all library features
|
2010-12-01 10:33:07 +01:00
|
|
|
CPPFLAGS="-D_POSIX_C_SOURCE=200112L $CPPFLAGS"
|
2009-08-03 11:30:13 +02:00
|
|
|
AC_DEFINE(ZMQ_HAVE_HPUX, 1, [Have HPUX OS])
|
2012-01-19 19:27:19 +01:00
|
|
|
LIBZMQ_CHECK_LANG_FLAG_PREPEND([-Ae])
|
|
|
|
AC_CHECK_FUNCS(gethrtime)
|
2009-07-29 12:07:54 +02:00
|
|
|
;;
|
|
|
|
*mingw32*)
|
2009-08-03 11:30:13 +02:00
|
|
|
AC_DEFINE(ZMQ_HAVE_WINDOWS, 1, [Have Windows OS])
|
|
|
|
AC_DEFINE(ZMQ_HAVE_MINGW32, 1, [Have MinGW32])
|
2009-07-29 12:07:54 +02:00
|
|
|
AC_CHECK_HEADERS(windows.h)
|
2009-10-12 22:50:01 +02:00
|
|
|
AC_CHECK_LIB(ws2_32, main, ,
|
2010-02-15 22:58:45 +01:00
|
|
|
[AC_MSG_ERROR([cannot link with ws2_32.dll.])])
|
2010-03-03 17:01:08 +01:00
|
|
|
AC_CHECK_LIB(rpcrt4, main, ,
|
|
|
|
[AC_MSG_ERROR([cannot link with rpcrt4.dll.])])
|
|
|
|
AC_CHECK_LIB(iphlpapi, main, ,
|
|
|
|
[AC_MSG_ERROR([cannot link with iphlpapi.dll.])])
|
2010-11-17 15:05:01 +01:00
|
|
|
# mingw32 defines __int64_t as long long
|
2010-12-01 10:33:07 +01:00
|
|
|
AC_LANG_PUSH([C++])
|
2011-04-02 22:50:46 +02:00
|
|
|
LIBZMQ_CHECK_LANG_FLAG_PREPEND([-Wno-long-long])
|
2010-12-01 10:33:07 +01:00
|
|
|
AC_LANG_POP([C++])
|
2011-04-02 22:50:46 +02:00
|
|
|
libzmq_on_mingw32="yes"
|
|
|
|
libzmq_dso_visibility="no"
|
2010-11-17 15:06:51 +01:00
|
|
|
|
|
|
|
if test "x$enable_static" = "xyes"; then
|
|
|
|
AC_MSG_ERROR([Building static libraries is not supported under MinGW32])
|
|
|
|
fi
|
2009-07-29 12:07:54 +02:00
|
|
|
;;
|
2010-02-19 17:50:47 +01:00
|
|
|
*cygwin*)
|
2010-02-26 20:03:58 +01:00
|
|
|
# Define on Cygwin to enable all library features
|
|
|
|
CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS"
|
2010-02-19 17:50:47 +01:00
|
|
|
AC_DEFINE(ZMQ_HAVE_CYGWIN, 1, [Have Cygwin])
|
2010-11-17 15:06:51 +01:00
|
|
|
if test "x$enable_static" = "xyes"; then
|
|
|
|
AC_MSG_ERROR([Building static libraries is not supported under Cygwin])
|
|
|
|
fi
|
2010-02-19 17:50:47 +01:00
|
|
|
;;
|
2009-07-29 12:07:54 +02:00
|
|
|
*)
|
2010-02-15 22:58:45 +01:00
|
|
|
AC_MSG_ERROR([unsupported system: ${host_os}.])
|
2009-07-29 12:07:54 +02:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2013-09-27 13:12:16 +02:00
|
|
|
# Checks for libraries
|
|
|
|
AC_CHECK_LIB([pthread], [pthread_create])
|
|
|
|
AC_CHECK_LIB([rt], [clock_gettime])
|
|
|
|
AC_CHECK_LIB([sodium], [sodium_init],,AC_MSG_WARN(libsodium is needed for CURVE security))
|
|
|
|
|
2010-12-01 10:33:07 +01:00
|
|
|
#
|
|
|
|
# Check if the compiler supports -fvisibility=hidden flag. MinGW32 uses __declspec
|
|
|
|
#
|
2011-04-02 22:50:46 +02:00
|
|
|
if test "x$libzmq_dso_visibility" = "xyes"; then
|
2010-12-01 10:33:07 +01:00
|
|
|
AC_LANG_PUSH([C++])
|
2011-04-02 22:50:46 +02:00
|
|
|
LIBZMQ_CHECK_LANG_VISIBILITY([LIBZMQ_EXTRA_CXXFLAGS="$libzmq_cv_[]_AC_LANG_ABBREV[]_visibility_flag ${LIBZMQ_EXTRA_CXXFLAGS}"])
|
2010-12-01 10:33:07 +01:00
|
|
|
AC_LANG_POP([C++])
|
2010-11-25 17:12:31 +01:00
|
|
|
fi
|
|
|
|
|
2010-02-15 22:25:01 +01:00
|
|
|
# CPU-specific optimizations
|
|
|
|
case "${host_cpu}" in
|
|
|
|
*sparc*)
|
2010-12-01 10:33:07 +01:00
|
|
|
AC_LANG_PUSH([C++])
|
2011-04-02 22:50:46 +02:00
|
|
|
LIBZMQ_CHECK_LANG_FLAG_PREPEND([-mcpu=v9])
|
2010-12-01 10:33:07 +01:00
|
|
|
AC_LANG_POP([C++])
|
2010-02-15 22:25:01 +01:00
|
|
|
;;
|
|
|
|
*)
|
|
|
|
;;
|
|
|
|
esac
|
2009-07-29 12:07:54 +02:00
|
|
|
|
2010-11-15 17:02:36 +01:00
|
|
|
# Check whether to build docs / install man pages
|
2011-04-02 22:50:46 +02:00
|
|
|
LIBZMQ_CHECK_DOC_BUILD
|
2010-11-15 17:02:36 +01:00
|
|
|
|
2011-09-04 10:28:15 +02:00
|
|
|
# Check polling system
|
|
|
|
LIBZMQ_CHECK_POLLER([CPPFLAGS="${CPPFLAGS} -D${libzmq_cv_poller_flag}"],
|
|
|
|
[AC_MSG_ERROR([Unable to continue without polling system])])
|
|
|
|
|
2009-07-29 12:07:54 +02:00
|
|
|
# Checks for header files.
|
|
|
|
AC_HEADER_STDC
|
|
|
|
AC_CHECK_HEADERS(errno.h arpa/inet.h netinet/tcp.h netinet/in.h stddef.h \
|
2011-12-03 13:07:30 +01:00
|
|
|
stdlib.h string.h sys/socket.h sys/time.h time.h unistd.h limits.h)
|
2009-07-29 12:07:54 +02:00
|
|
|
|
|
|
|
# Check if we have ifaddrs.h header file.
|
2009-08-03 11:30:13 +02:00
|
|
|
AC_CHECK_HEADERS(ifaddrs.h, [AC_DEFINE(ZMQ_HAVE_IFADDRS, 1, [Have ifaddrs.h header.])])
|
2009-07-29 12:07:54 +02:00
|
|
|
|
2012-02-07 16:47:51 +01:00
|
|
|
# Check if we have sys/uio.h header file.
|
|
|
|
AC_CHECK_HEADERS(sys/uio.h, [AC_DEFINE(ZMQ_HAVE_UIO, 1, [Have uio.h header.])])
|
|
|
|
|
2011-07-03 16:11:11 +02:00
|
|
|
# Force not to use eventfd
|
|
|
|
AC_ARG_ENABLE([eventfd], [AS_HELP_STRING([--disable-eventfd], [disable eventfd [default=no]])],
|
|
|
|
[zmq_disable_eventfd=yes], [zmq_disable_eventfd=no])
|
|
|
|
|
|
|
|
if test "x$zmq_disable_eventfd" != "xyes"; then
|
|
|
|
# Check if we have eventfd.h header file.
|
|
|
|
AC_CHECK_HEADERS(sys/eventfd.h,
|
|
|
|
[AC_DEFINE(ZMQ_HAVE_EVENTFD, 1, [Have eventfd extension.])])
|
|
|
|
fi
|
|
|
|
|
2009-07-29 12:07:54 +02:00
|
|
|
# Use c++ in subsequent tests
|
2010-12-01 10:33:07 +01:00
|
|
|
AC_LANG_PUSH(C++)
|
2009-07-29 12:07:54 +02:00
|
|
|
|
2013-12-06 19:59:07 +01:00
|
|
|
AC_CHECK_DECLS([SO_PEERCRED], [AC_DEFINE(ZMQ_HAVE_SO_PEERCRED, 1, [Have SO_PEERCRED socket option])], [], [#include <sys/socket.h>])
|
|
|
|
AC_CHECK_DECLS([LOCAL_PEERCRED], [AC_DEFINE(ZMQ_HAVE_LOCAL_PEERCRED, 1, [Have LOCAL_PEERCRED socket option])], [], [#include <sys/socket.h>])
|
2013-12-06 23:28:44 +01:00
|
|
|
AM_CONDITIONAL(HAVE_IPC_PEERCRED, test "x$ac_cv_have_decl_SO_PEERCRED" = "xyes" || test "x$ac_cv_have_decl_LOCAL_PEERCRED" = "xyes")
|
2013-12-06 19:59:07 +01:00
|
|
|
|
2009-07-29 12:07:54 +02:00
|
|
|
AC_HEADER_STDBOOL
|
|
|
|
AC_C_CONST
|
|
|
|
AC_C_INLINE
|
2010-12-01 10:33:07 +01:00
|
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
2011-04-02 22:50:46 +02:00
|
|
|
if test "x$libzmq_cv_[]_AC_LANG_ABBREV[]_intel_compiler" = "xyes"; then
|
2010-12-01 10:33:07 +01:00
|
|
|
dnl 279: controlling expression is constant
|
|
|
|
dnl Fixes build with ICC 12.x
|
2011-04-02 22:50:46 +02:00
|
|
|
LIBZMQ_CHECK_WITH_FLAG([-wd279], [AC_TYPE_SIZE_T])
|
|
|
|
LIBZMQ_CHECK_WITH_FLAG([-wd279], [AC_TYPE_SSIZE_T])
|
2010-12-01 10:33:07 +01:00
|
|
|
else
|
|
|
|
AC_TYPE_SIZE_T
|
|
|
|
AC_TYPE_SSIZE_T
|
|
|
|
fi
|
2009-07-29 12:07:54 +02:00
|
|
|
AC_HEADER_TIME
|
|
|
|
AC_TYPE_UINT32_T
|
|
|
|
AC_C_VOLATILE
|
|
|
|
|
2009-09-10 11:21:05 +02:00
|
|
|
# PGM extension
|
2011-04-02 22:50:46 +02:00
|
|
|
libzmq_pgm_ext="no"
|
2009-09-24 12:43:35 +02:00
|
|
|
|
2012-12-12 03:41:10 +01:00
|
|
|
pgm_basename="libpgm-5.2.122~dfsg"
|
2009-09-24 12:43:35 +02:00
|
|
|
|
2009-09-10 11:21:05 +02:00
|
|
|
AC_ARG_WITH([pgm], [AS_HELP_STRING([--with-pgm],
|
2009-12-13 09:56:02 +01:00
|
|
|
[build libzmq with PGM extension [default=no]])],
|
2011-03-31 18:42:09 +02:00
|
|
|
[with_pgm_ext=$withval], [with_pgm_ext=no])
|
2009-09-24 12:43:35 +02:00
|
|
|
|
2011-04-02 22:48:52 +02:00
|
|
|
# build using system pgm
|
|
|
|
AC_ARG_WITH([system-pgm], [AS_HELP_STRING([--with-system-pgm],
|
2011-04-04 22:52:02 +02:00
|
|
|
[build libzmq with PGM extension. Requires pkg-config [default=no]])],
|
2011-04-02 22:48:52 +02:00
|
|
|
[with_system_pgm_ext=yes], [with_system_pgm_ext=no])
|
|
|
|
|
|
|
|
if test "x$with_pgm_ext" != "xno" -a "x$with_system_pgm_ext" != "xno"; then
|
|
|
|
AC_MSG_ERROR([--with-pgm and --with-system-pgm cannot be specified together])
|
|
|
|
fi
|
|
|
|
|
2010-02-15 23:51:05 +01:00
|
|
|
if test "x$with_pgm_ext" != "xno"; then
|
2009-09-24 12:43:35 +02:00
|
|
|
|
2011-03-31 18:42:09 +02:00
|
|
|
# This allows placing the tar.gz to foreign/openpgm
|
|
|
|
# and using ./configure --with-pgm=libpgm-x.y.z
|
|
|
|
if test "x$with_pgm_ext" != "xyes"; then
|
|
|
|
pgm_basename="$with_pgm_ext"
|
2009-09-24 12:43:35 +02:00
|
|
|
fi
|
|
|
|
|
2011-03-31 18:42:09 +02:00
|
|
|
# Unpack libpgm
|
2010-02-24 09:41:10 +01:00
|
|
|
AC_MSG_NOTICE([Unpacking ${pgm_basename}.tar.gz])
|
2011-04-02 22:50:46 +02:00
|
|
|
libzmq_pwd=`pwd`
|
2010-12-07 11:15:51 +01:00
|
|
|
cd foreign/openpgm
|
|
|
|
|
|
|
|
if ! (gzip -dc "${pgm_basename}.tar.gz" || echo "failed") | ${am__untar}; then
|
|
|
|
AC_MSG_ERROR([cannot unpack the foreign/openpgm/${pgm_basename}.tar.gz file])
|
2010-02-15 22:17:18 +01:00
|
|
|
fi
|
2011-03-31 18:42:09 +02:00
|
|
|
|
2011-04-02 22:50:46 +02:00
|
|
|
cd "${libzmq_pwd}"
|
2010-02-15 22:17:18 +01:00
|
|
|
|
2011-03-31 18:42:09 +02:00
|
|
|
if test -d foreign/openpgm/build-staging; then
|
|
|
|
rm -rf foreign/openpgm/build-staging
|
|
|
|
fi
|
|
|
|
|
|
|
|
mv foreign/openpgm/${pgm_basename} foreign/openpgm/build-staging
|
|
|
|
pgm_srcdir=foreign/openpgm/build-staging/openpgm/pgm
|
|
|
|
|
|
|
|
if ! test -d foreign/openpgm/build-staging/openpgm/pgm/config; then
|
|
|
|
mkdir foreign/openpgm/build-staging/openpgm/pgm/config
|
|
|
|
fi
|
|
|
|
|
|
|
|
# DSO symbol visibility for openpgm
|
|
|
|
AC_LANG_PUSH([C])
|
2011-04-02 22:50:46 +02:00
|
|
|
LIBZMQ_CHECK_LANG_VISIBILITY([ac_configure_args="CFLAGS='$libzmq_cv_[]_AC_LANG_ABBREV[]_visibility_flag' ${ac_configure_args}"])
|
2011-03-31 18:42:09 +02:00
|
|
|
AC_LANG_POP([C])
|
|
|
|
|
|
|
|
pgm_subdir=build-staging/openpgm/pgm
|
|
|
|
AC_SUBST(pgm_subdir)
|
|
|
|
|
|
|
|
AC_SUBST(pgm_srcdir)
|
|
|
|
AC_CONFIG_SUBDIRS([foreign/openpgm/build-staging/openpgm/pgm/])
|
|
|
|
|
|
|
|
# Success!
|
2010-02-15 22:17:18 +01:00
|
|
|
AC_DEFINE(ZMQ_HAVE_OPENPGM, 1, [Have OpenPGM extension])
|
2011-04-02 22:50:46 +02:00
|
|
|
libzmq_pgm_ext="yes"
|
2009-09-24 12:43:35 +02:00
|
|
|
fi
|
|
|
|
|
2011-04-02 22:48:52 +02:00
|
|
|
# Build with system openpgm
|
|
|
|
if test "x$with_system_pgm_ext" != "xno"; then
|
2011-04-04 22:52:02 +02:00
|
|
|
m4_ifdef([PKG_CHECK_MODULES], [
|
2013-06-01 04:39:40 +02:00
|
|
|
have_pgm_system_library="no"
|
|
|
|
PKG_CHECK_MODULES([OpenPGM], [openpgm-5.2 >= 5.2],
|
|
|
|
[ have_pgm_system_library="yes" ],
|
|
|
|
[PKG_CHECK_MODULES([OpenPGM], [openpgm-5.1 >= 5.1],
|
|
|
|
[ have_pgm_system_library="yes" ])
|
|
|
|
]
|
|
|
|
)
|
|
|
|
if test "x$have_pgm_system_library" = "xyes"; then
|
|
|
|
AC_DEFINE(ZMQ_HAVE_OPENPGM, 1, [Have OpenPGM extension])
|
|
|
|
LIBZMQ_EXTRA_CXXFLAGS="$OpenPGM_CFLAGS $LIBZMQ_EXTRA_CXXFLAGS"
|
|
|
|
LIBS="$OpenPGM_LIBS $LIBS"
|
|
|
|
fi
|
2011-04-04 22:52:02 +02:00
|
|
|
],
|
|
|
|
[AC_MSG_ERROR([--with-system-pgm requires a working pkg-config installation])])
|
2011-04-02 22:48:52 +02:00
|
|
|
fi
|
|
|
|
|
2011-03-31 18:42:09 +02:00
|
|
|
AC_SUBST(pgm_basename)
|
|
|
|
|
2010-12-01 10:33:07 +01:00
|
|
|
# Set -Wall, -Werror and -pedantic
|
|
|
|
AC_LANG_PUSH([C++])
|
2010-04-10 16:18:34 +02:00
|
|
|
|
2010-12-01 10:33:07 +01:00
|
|
|
# Check how to enable -Wall
|
2011-04-02 22:50:46 +02:00
|
|
|
LIBZMQ_LANG_WALL([CPPFLAGS="$libzmq_cv_[]_AC_LANG_ABBREV[]_wall_flag $CPPFLAGS"])
|
2009-09-24 16:23:49 +02:00
|
|
|
|
2011-04-02 22:50:46 +02:00
|
|
|
if test "x$libzmq_werror" = "xyes" -a "x$libzmq_cv_[]_AC_LANG_ABBREV[]_sun_studio_compiler" != "xyes"; then
|
|
|
|
LIBZMQ_LANG_WERROR([CPPFLAGS="$libzmq_cv_[]_AC_LANG_ABBREV[]_werror_flag $CPPFLAGS"])
|
2010-12-01 10:33:07 +01:00
|
|
|
fi
|
|
|
|
|
2011-04-02 22:50:46 +02:00
|
|
|
if test "x$libzmq_pedantic" = "xyes"; then
|
|
|
|
LIBZMQ_LANG_STRICT([CPPFLAGS="$libzmq_cv_[]_AC_LANG_ABBREV[]_strict_flag $CPPFLAGS"])
|
2009-09-10 11:21:05 +02:00
|
|
|
fi
|
2010-12-01 10:33:07 +01:00
|
|
|
AC_LANG_POP([C++])
|
2009-09-10 11:21:05 +02:00
|
|
|
|
2013-11-01 14:59:31 +01:00
|
|
|
AM_CONDITIONAL(BUILD_TIPC, test "x$libzmq_tipc_support" = "xyes")
|
2011-04-02 22:50:46 +02:00
|
|
|
AM_CONDITIONAL(BUILD_PGM, test "x$libzmq_pgm_ext" = "xyes")
|
|
|
|
AM_CONDITIONAL(ON_MINGW, test "x$libzmq_on_mingw32" = "xyes")
|
2012-07-03 12:20:37 +02:00
|
|
|
AM_CONDITIONAL(ON_ANDROID, test "x$libzmq_on_android" = "xyes")
|
2013-10-04 01:35:30 +02:00
|
|
|
AM_CONDITIONAL(ON_LINUX, test "x$libzmq_on_linux" = "xyes")
|
2009-08-26 15:50:37 +02:00
|
|
|
|
2011-01-12 09:22:25 +01:00
|
|
|
# Checks for library functions.
|
|
|
|
AC_TYPE_SIGNAL
|
2013-09-01 12:19:58 +02:00
|
|
|
AC_CHECK_FUNCS(perror gettimeofday clock_gettime memset socket getifaddrs freeifaddrs fork)
|
2011-01-12 09:22:25 +01:00
|
|
|
AC_CHECK_HEADERS([alloca.h])
|
2011-10-26 11:26:00 +02:00
|
|
|
LIBZMQ_CHECK_SOCK_CLOEXEC([AC_DEFINE(
|
|
|
|
[ZMQ_HAVE_SOCK_CLOEXEC],
|
|
|
|
[1],
|
|
|
|
[Whether SOCK_CLOEXEC is defined and functioning.])
|
|
|
|
])
|
2012-04-06 18:04:35 +02:00
|
|
|
|
|
|
|
# TCP keep-alives Checks.
|
|
|
|
LIBZMQ_CHECK_SO_KEEPALIVE([AC_DEFINE(
|
|
|
|
[ZMQ_HAVE_SO_KEEPALIVE],
|
2012-04-05 17:39:53 +02:00
|
|
|
[1],
|
|
|
|
[Whether SO_KEEPALIVE is supported.])
|
|
|
|
])
|
2012-04-06 18:04:35 +02:00
|
|
|
LIBZMQ_CHECK_TCP_KEEPCNT([AC_DEFINE(
|
|
|
|
[ZMQ_HAVE_TCP_KEEPCNT],
|
|
|
|
[1],
|
|
|
|
[Whether TCP_KEEPCNT is supported.])
|
|
|
|
])
|
|
|
|
LIBZMQ_CHECK_TCP_KEEPIDLE([AC_DEFINE(
|
|
|
|
[ZMQ_HAVE_TCP_KEEPIDLE],
|
|
|
|
[1],
|
|
|
|
[Whether TCP_KEEPIDLE is supported.])
|
|
|
|
])
|
|
|
|
LIBZMQ_CHECK_TCP_KEEPINTVL([AC_DEFINE(
|
|
|
|
[ZMQ_HAVE_TCP_KEEPINTVL],
|
|
|
|
[1],
|
|
|
|
[Whether TCP_KEEPINTVL is supported.])
|
|
|
|
])
|
|
|
|
LIBZMQ_CHECK_TCP_KEEPALIVE([AC_DEFINE(
|
|
|
|
[ZMQ_HAVE_TCP_KEEPALIVE],
|
2012-04-05 17:39:53 +02:00
|
|
|
[1],
|
2012-04-06 18:04:35 +02:00
|
|
|
[Whether TCP_KEEPALIVE is supported.])
|
2012-04-05 17:39:53 +02:00
|
|
|
])
|
2011-01-12 09:22:25 +01:00
|
|
|
|
2010-11-15 17:02:36 +01:00
|
|
|
# Subst LIBZMQ_EXTRA_CFLAGS & CXXFLAGS & LDFLAGS
|
|
|
|
AC_SUBST(LIBZMQ_EXTRA_CFLAGS)
|
2009-09-10 11:21:05 +02:00
|
|
|
AC_SUBST(LIBZMQ_EXTRA_CXXFLAGS)
|
2010-02-15 23:51:05 +01:00
|
|
|
AC_SUBST(LIBZMQ_EXTRA_LDFLAGS)
|
2009-07-29 12:07:54 +02:00
|
|
|
|
Added Z85 support
The use of binary for CURVE keys is painful; you cannot easily copy
these in e.g. email, or use them directly in source code. There are
various encoding possibilities. Base16 and Base64 are not optimal.
Ascii85 is not safe for source (it generates quotes and escapes).
So, I've designed a new Base85 encoding, Z85, which is safe to use
in code and elsewhere, and I've modified libzmq to use this where
it also uses binary keys (in get/setsockopt).
Very simply, if you use a 32-byte value, it's Base256 (binary),
and if you use a 40-byte value, it's Base85 (Z85).
I've put the Z85 codec into z85_codec.hpp, it's not elegant C++
but it is minimal and it works. Feel free to rewrap as a real class
if this annoys you.
2013-06-28 22:10:22 +02:00
|
|
|
AC_CONFIG_FILES([Makefile \
|
|
|
|
src/Makefile \
|
|
|
|
src/libzmq.pc \
|
|
|
|
doc/Makefile \
|
|
|
|
perf/Makefile \
|
|
|
|
tests/Makefile \
|
|
|
|
tools/Makefile \
|
|
|
|
builds/msvc/Makefile \
|
2011-04-09 08:45:12 +02:00
|
|
|
foreign/openpgm/Makefile \
|
|
|
|
builds/redhat/zeromq.spec])
|
2010-11-18 11:51:27 +01:00
|
|
|
AC_OUTPUT
|