mirror of
https://github.com/irungentoo/toxcore.git
synced 2024-03-22 13:30:51 +08:00
895a6af122
We now depend on libsodium unconditionally. Future work will require functions from libsodium, and nobody we're aware of uses the nacl build for anything other than making sure it still works on CI.
449 lines
12 KiB
Plaintext
449 lines
12 KiB
Plaintext
# -*- Autoconf -*-
|
|
# Process this file with autoconf to produce a configure script.
|
|
|
|
AC_PREREQ([2.65])
|
|
AC_INIT([tox], [0.2.18])
|
|
AC_CONFIG_AUX_DIR(configure_aux)
|
|
AC_CONFIG_SRCDIR([toxcore/net_crypto.c])
|
|
AM_INIT_AUTOMAKE([foreign 1.10 -Wall -Werror subdir-objects tar-ustar])
|
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
|
|
EXTRA_LT_LDFLAGS=
|
|
|
|
if test "x${prefix}" = "xNONE"; then
|
|
prefix="${ac_default_prefix}"
|
|
fi
|
|
|
|
BUILD_DHT_BOOTSTRAP_DAEMON="no"
|
|
BUILD_DHT_BOOTSTRAP="no"
|
|
BUILD_TESTS="yes"
|
|
BUILD_AV="yes"
|
|
BUILD_TESTING="yes"
|
|
|
|
LIBCONFIG_FOUND="no"
|
|
SET_SO_VERSION="yes"
|
|
|
|
AC_ARG_ENABLE([soname-versions],
|
|
[AC_HELP_STRING([--enable-soname-versions], [enable soname versions (must be disabled for android) (default: enabled)]) ],
|
|
[
|
|
if test "x$enableval" = "xno"; then
|
|
SET_SO_VERSION="no"
|
|
elif test "x$enableval" = "xyes"; then
|
|
SET_SO_VERSION="yes"
|
|
fi
|
|
]
|
|
)
|
|
AM_CONDITIONAL(SET_SO_VERSION, test "x$SET_SO_VERSION" = "xyes")
|
|
|
|
AC_ARG_ENABLE([randombytes-stir],
|
|
[AC_HELP_STRING([--enable-randombytes-stir], [use randombytes_stir() instead of sodium_init() for faster startup on android (default: disabled)]) ],
|
|
[
|
|
if test "x$enableval" = "xyes"; then
|
|
AC_DEFINE([USE_RANDOMBYTES_STIR], [1], [randombytes_stir() instead of sodium_init()])
|
|
fi
|
|
]
|
|
)
|
|
|
|
AC_ARG_WITH(log-level,
|
|
AC_HELP_STRING([--with-log-level=LEVEL],
|
|
[Logger levels: TRACE; DEBUG; INFO; WARNING; ERROR ]),
|
|
[
|
|
if test "x$withval" = "xTRACE"; then
|
|
AC_DEFINE([MIN_LOGGER_LEVEL], [LOGGER_LEVEL_TRACE], [Logger_Level value])
|
|
|
|
elif test "x$withval" = "xDEBUG"; then
|
|
AC_DEFINE([MIN_LOGGER_LEVEL], [LOGGER_LEVEL_DEBUG], [Logger_Level value])
|
|
|
|
elif test "x$withval" = "xINFO"; then
|
|
AC_DEFINE([MIN_LOGGER_LEVEL], [LOGGER_LEVEL_INFO], [Logger_Level value])
|
|
|
|
elif test "x$withval" = "xWARNING"; then
|
|
AC_DEFINE([MIN_LOGGER_LEVEL], [LOGGER_LEVEL_WARNING], [Logger_Level value])
|
|
|
|
elif test "x$withval" = "xERROR"; then
|
|
AC_DEFINE([MIN_LOGGER_LEVEL], [LOGGER_LEVEL_ERROR], [Logger_Level value])
|
|
else
|
|
AC_MSG_WARN([Invalid logger level: $withval. Using default.])
|
|
fi
|
|
]
|
|
)
|
|
|
|
PKG_PROG_PKG_CONFIG
|
|
|
|
AC_ARG_ENABLE([av],
|
|
[AC_HELP_STRING([--disable-av], [build AV support libraries (default: auto)]) ],
|
|
[
|
|
if test "x$enableval" = "xno"; then
|
|
BUILD_AV="no"
|
|
elif test "x$enableval" = "xyes"; then
|
|
BUILD_AV="yes"
|
|
fi
|
|
]
|
|
)
|
|
|
|
AC_ARG_ENABLE([tests],
|
|
[AC_HELP_STRING([--disable-tests], [build unit tests (default: auto)]) ],
|
|
[
|
|
if test "x$enableval" = "xno"; then
|
|
BUILD_TESTS="no"
|
|
elif test "x$enableval" = "xyes"; then
|
|
BUILD_TESTS="yes"
|
|
fi
|
|
]
|
|
)
|
|
|
|
AC_ARG_ENABLE([daemon],
|
|
[AC_HELP_STRING([--enable-daemon], [build DHT bootstrap daemon (default: auto)]) ],
|
|
[
|
|
if test "x$enableval" = "xno"; then
|
|
BUILD_DHT_BOOTSTRAP_DAEMON="no"
|
|
elif test "x$enableval" = "xyes"; then
|
|
BUILD_DHT_BOOTSTRAP_DAEMON="yes"
|
|
fi
|
|
]
|
|
)
|
|
|
|
AC_ARG_ENABLE([dht-bootstrap],
|
|
[AC_HELP_STRING([--enable-dht-bootstrap], [build DHT bootstrap utility (default: disabled)]) ],
|
|
[
|
|
if test "x$enableval" = "xno"; then
|
|
BUILD_DHT_BOOTSTRAP="no"
|
|
elif test "x$enableval" = "xyes"; then
|
|
BUILD_DHT_BOOTSTRAP="yes"
|
|
fi
|
|
]
|
|
)
|
|
|
|
|
|
AC_ARG_ENABLE([rt],
|
|
[AC_HELP_STRING([--disable-rt], [Disables the librt check (default: auto)]) ],
|
|
[
|
|
if test "x$enableval" = "xno"; then
|
|
DISABLE_RT="yes"
|
|
elif test "x$enableval" = "xyes"; then
|
|
DISABLE_RT="no"
|
|
fi
|
|
]
|
|
)
|
|
|
|
AC_ARG_ENABLE([testing],
|
|
[AC_HELP_STRING([--disable-testing], [build various testing tools (default: auto)]) ],
|
|
[
|
|
if test "x$enableval" = "xno"; then
|
|
BUILD_TESTING="no"
|
|
elif test "x$enableval" = "xyes"; then
|
|
BUILD_TESTING="yes"
|
|
fi
|
|
]
|
|
)
|
|
|
|
AC_ARG_ENABLE([[epoll]],
|
|
[AS_HELP_STRING([[--enable-epoll[=ARG]]], [enable epoll support (yes, no, auto) [auto]])],
|
|
[enable_epoll=${enableval}],
|
|
[enable_epoll='auto']
|
|
)
|
|
|
|
AC_ARG_ENABLE([[ipv6]],
|
|
[AS_HELP_STRING([[--disable-ipv6[=ARG]]], [use ipv4 in tests (yes, no, auto) [auto]])],
|
|
[use_ipv6=${enableval}],
|
|
[use_ipv6='auto']
|
|
)
|
|
|
|
if test "$use_ipv6" != "yes"; then
|
|
AC_DEFINE([USE_IPV6],[0],[define to 0 to force ipv4])
|
|
fi
|
|
|
|
AX_HAVE_EPOLL
|
|
if test "$enable_epoll" != "no"; then
|
|
if test "${ax_cv_have_epoll}" = "yes"; then
|
|
AC_DEFINE([TCP_SERVER_USE_EPOLL],[1],[define to 1 to enable epoll support])
|
|
enable_epoll='yes'
|
|
else
|
|
if test "$enable_epoll" = "yes"; then
|
|
AC_MSG_ERROR([[Support for epoll was explicitly requested but cannot be enabled on this platform.]])
|
|
fi
|
|
enable_epoll='no'
|
|
fi
|
|
fi
|
|
|
|
DEPSEARCH=
|
|
LIBSODIUM_SEARCH_HEADERS=
|
|
LIBSODIUM_SEARCH_LIBS=
|
|
|
|
AC_ARG_WITH(dependency-search,
|
|
AC_HELP_STRING([--with-dependency-search=DIR],
|
|
[search for dependencies in DIR, i.e., look for libraries in
|
|
DIR/lib and for headers in DIR/include]),
|
|
[
|
|
DEPSEARCH="$withval"
|
|
]
|
|
)
|
|
|
|
if test -n "$DEPSEARCH"; then
|
|
CFLAGS="$CFLAGS -I$DEPSEARCH/include"
|
|
CPPFLAGS="$CPPFLAGS -I$DEPSEARCH/include"
|
|
LDFLAGS="$LDFLAGS -L$DEPSEARCH/lib"
|
|
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$DEPSEARCH/lib/pkgconfig
|
|
fi
|
|
|
|
AC_ARG_WITH(libsodium-headers,
|
|
AC_HELP_STRING([--with-libsodium-headers=DIR],
|
|
[search for libsodium header files in DIR]),
|
|
[
|
|
LIBSODIUM_SEARCH_HEADERS="$withval"
|
|
AC_MSG_NOTICE([will search for libsodium header files in $withval])
|
|
]
|
|
)
|
|
|
|
AC_ARG_WITH(libsodium-libs,
|
|
AC_HELP_STRING([--with-libsodium-libs=DIR],
|
|
[search for libsodium libraries in DIR]),
|
|
[
|
|
LIBSODIUM_SEARCH_LIBS="$withval"
|
|
AC_MSG_NOTICE([will search for libsodium libraries in $withval])
|
|
]
|
|
)
|
|
|
|
# Checks for programs.
|
|
AC_PROG_CC_C99
|
|
|
|
if test "x$ac_cv_prog_cc_c99" = "xno" ; then
|
|
AC_MSG_ERROR([c-toxcore requires a C99 compatible compiler])
|
|
fi
|
|
|
|
AM_PROG_CC_C_O
|
|
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
|
|
AC_LIBTOOL_WIN32_DLL
|
|
AC_PROG_LIBTOOL
|
|
|
|
WIN32=no
|
|
MACH=no
|
|
AC_CANONICAL_HOST
|
|
case $host_os in
|
|
*mingw*)
|
|
WIN32="yes"
|
|
EXTRA_LT_LDFLAGS="$EXTRA_LT_LDFLAGS -no-undefined"
|
|
;;
|
|
*solaris*)
|
|
LIBS="$LIBS -lssp -lsocket -lnsl"
|
|
;;
|
|
*qnx*)
|
|
LIBS="$LIBS -lsocket"
|
|
;;
|
|
*freebsd*|*openbsd*)
|
|
LDFLAGS="$LDFLAGS -L/usr/local/lib"
|
|
CFLAGS="$CFLAGS -I/usr/local/include"
|
|
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
|
|
;;
|
|
darwin*)
|
|
MACH=yes
|
|
;;
|
|
esac
|
|
AM_CONDITIONAL(WIN32, test "x$WIN32" = "xyes")
|
|
|
|
AC_SUBST(EXTRA_LT_LDFLAGS)
|
|
|
|
# Needed math flags for some compilers
|
|
|
|
MATH_LDFLAGS="-lm"
|
|
AC_SUBST(MATH_LDFLAGS)
|
|
|
|
# Checks for libraries.
|
|
AC_CHECK_FUNCS([explicit_bzero memset_s])
|
|
PKG_CHECK_MODULES([LIBSODIUM], [libsodium],
|
|
[
|
|
LIBSODIUM_FOUND="yes"
|
|
],
|
|
[
|
|
LIBSODIUM_FOUND="no"
|
|
])
|
|
|
|
if test "x$LIBSODIUM_FOUND" = "xno"; then
|
|
LIBSODIUM_LIBS=
|
|
LIBSODIUM_LDFLAGS=
|
|
LDFLAGS_SAVE="$LDFLAGS"
|
|
if test -n "$LIBSODIUM_SEARCH_LIBS"; then
|
|
LDFLAGS="-L$LIBSODIUM_SEARCH_LIBS $LDFLAGS"
|
|
AC_CHECK_LIB(sodium, crypto_pwhash_scryptsalsa208sha256,
|
|
[
|
|
LIBSODIUM_LDFLAGS="-L$LIBSODIUM_SEARCH_LIBS"
|
|
LIBSODIUM_LIBS="-lsodium"
|
|
],
|
|
[
|
|
AC_MSG_ERROR([required library libsodium was not found in requested location $LIBSODIUM_SEARCH_LIBS or library version is too old])
|
|
]
|
|
)
|
|
else
|
|
AC_CHECK_LIB(sodium, crypto_pwhash_scryptsalsa208sha256,
|
|
[],
|
|
[
|
|
AC_MSG_ERROR([required library libsodium was not found on your system, please check http://download.libsodium.org/libsodium/releases/ or library version is too old])
|
|
]
|
|
)
|
|
fi
|
|
|
|
LDFLAGS="$LDFLAGS_SAVE"
|
|
AC_SUBST(LIBSODIUM_LIBS)
|
|
AC_SUBST(LIBSODIUM_LDFLAGS)
|
|
fi
|
|
|
|
# Checks for header files.
|
|
AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stdint.h stdlib.h string.h sys/socket.h sys/time.h unistd.h])
|
|
|
|
|
|
if test "x$LIBSODIUM_FOUND" = "xno"; then
|
|
LIBSODIUM_CFLAGS=
|
|
CFLAGS_SAVE="$CFLAGS"
|
|
CPPFLAGS_SAVE="$CPPFLAGS"
|
|
if test -n "$LIBSODIUM_SEARCH_HEADERS"; then
|
|
CFLAGS="-I$LIBSODIUM_SEARCH_HEADERS $CFLAGS"
|
|
CPPFLAGS="-I$LIBSODIUM_SEARCH_HEADERS $CPPFLAGS"
|
|
AC_CHECK_HEADER(sodium.h,
|
|
[
|
|
LIBSODIUM_CFLAGS="-I$LIBSODIUM_SEARCH_HEADERS"
|
|
],
|
|
[
|
|
AC_MSG_ERROR([header files for required library libsodium were not found in requested location $LIBSODIUM_SEARCH_HEADERS])
|
|
]
|
|
)
|
|
else
|
|
AC_CHECK_HEADER(sodium.h,
|
|
[],
|
|
[
|
|
AC_MSG_ERROR([header files for required library libsodium was not found on your system, please check http://download.libsodium.org/libsodium/releases/])
|
|
]
|
|
)
|
|
fi
|
|
CFLAGS="$CFLAGS_SAVE"
|
|
CPPFLAGS="$CPPFLAGS_SAVE"
|
|
AC_SUBST(LIBSODIUM_CFLAGS)
|
|
fi
|
|
|
|
# Checks for library functions.
|
|
if (test "x$WIN32" != "xyes") && (test "x$MACH" != "xyes") && (test "x${host_os#*openbsd}" = "x$host_os") && (test "x$DISABLE_RT" != "xyes"); then
|
|
AC_CHECK_LIB(rt, clock_gettime,
|
|
[
|
|
RT_LIBS="-lrt"
|
|
AC_SUBST(RT_LIBS)
|
|
],
|
|
[
|
|
AC_MSG_ERROR([required library rt was not found on your system])
|
|
]
|
|
)
|
|
fi
|
|
|
|
|
|
AX_PTHREAD(
|
|
[],
|
|
[
|
|
AC_MSG_ERROR([required library pthread was not found on your system])
|
|
]
|
|
)
|
|
|
|
AC_CHECK_LIB([pthread], [pthread_self],
|
|
[
|
|
PTHREAD_LDFLAGS="-lpthread"
|
|
AC_SUBST(PTHREAD_LDFLAGS)
|
|
]
|
|
)
|
|
|
|
if test "x$BUILD_AV" = "xyes"; then
|
|
PKG_CHECK_MODULES([OPUS], [opus],
|
|
[],
|
|
[
|
|
AC_MSG_WARN([disabling AV support $OPUS_PKG_ERRORS])
|
|
BUILD_AV="no"
|
|
]
|
|
)
|
|
fi
|
|
|
|
if test "x$BUILD_AV" = "xyes"; then
|
|
PKG_CHECK_MODULES([VPX], [vpx],
|
|
[],
|
|
[
|
|
AC_MSG_WARN([disabling AV support $VPX_PKG_ERRORS])
|
|
BUILD_AV="no"
|
|
]
|
|
)
|
|
fi
|
|
|
|
if test "x$BUILD_AV" = "xyes"; then
|
|
# toxcore lib needs an global?
|
|
# So far this works okay
|
|
AV_LIBS="$OPUS_LIBS $VPX_LIBS"
|
|
AC_SUBST(AV_LIBS)
|
|
|
|
AV_CFLAGS="$OPUS_CFLAGS $VPX_CFLAGS"
|
|
AC_SUBST(AV_CFLAGS)
|
|
fi
|
|
|
|
if test -n "$PKG_CONFIG"; then
|
|
if test "x$BUILD_DHT_BOOTSTRAP_DAEMON" = "xyes"; then
|
|
PKG_CHECK_MODULES([LIBCONFIG], [libconfig >= 1.4.6],
|
|
[
|
|
LIBCONFIG_FOUND="yes"
|
|
],
|
|
[
|
|
AC_MSG_WARN([$LIBCONFIG_PKG_ERRORS])
|
|
AC_MSG_WARN([libconfig not available, will not build DHT bootstrap daemon])
|
|
BUILD_DHT_BOOTSTRAP_DAEMON="no"
|
|
])
|
|
fi
|
|
else
|
|
AC_MSG_WARN([pkg-config was not found on your system, will search for libraries manually])
|
|
fi
|
|
|
|
if (test "x$BUILD_DHT_BOOTSTRAP_DAEMON" = "xyes") && \
|
|
(test "x$LIBCONFIG_FOUND" = "xno"); then
|
|
AC_CHECK_HEADER(libconfig.h,
|
|
[],
|
|
[
|
|
AC_MSG_WARN([header files for library libconfig was not found on your system, not building DHT bootstrap daemon])
|
|
BUILD_DHT_BOOTSTRAP_DAEMON="no"
|
|
]
|
|
)
|
|
|
|
if test "x$BUILD_DHT_BOOTSTRAP_DAEMON" = "xyes"; then
|
|
AC_CHECK_LIB(config, config_read,
|
|
[],
|
|
[
|
|
AC_MSG_WARN([library libconfig was not found on the system])
|
|
BUILD_DHT_BOOTSTRAP_DAEMON="no"
|
|
]
|
|
)
|
|
fi
|
|
fi
|
|
|
|
if test "x$WIN32" = "xyes"; then
|
|
AC_CHECK_LIB(ws2_32, main,
|
|
[
|
|
WINSOCK2_LIBS="-liphlpapi -lws2_32"
|
|
AC_SUBST(WINSOCK2_LIBS)
|
|
],
|
|
[
|
|
AC_MSG_ERROR([required library was not found on the system, please check your MinGW installation])
|
|
]
|
|
)
|
|
fi
|
|
|
|
AM_CONDITIONAL(BUILD_DHT_BOOTSTRAP_DAEMON, test "x$BUILD_DHT_BOOTSTRAP_DAEMON" = "xyes")
|
|
AM_CONDITIONAL(BUILD_DHT_BOOTSTRAP, test "x$BUILD_DHT_BOOTSTRAP" = "xyes")
|
|
AM_CONDITIONAL(BUILD_TESTS, test "x$BUILD_TESTS" = "xyes")
|
|
AM_CONDITIONAL(BUILD_AV, test "x$BUILD_AV" = "xyes")
|
|
AM_CONDITIONAL(BUILD_TESTING, test "x$BUILD_TESTING" = "xyes")
|
|
AM_CONDITIONAL(WIN32, test "x$WIN32" = "xyes")
|
|
|
|
AC_CONFIG_FILES([Makefile
|
|
build/Makefile
|
|
libtoxcore.pc
|
|
tox.spec
|
|
])
|
|
|
|
AM_COND_IF(BUILD_AV,
|
|
[
|
|
AC_CONFIG_FILES([libtoxav.pc])
|
|
],)
|
|
|
|
AC_OUTPUT
|