mirror of https://gitee.com/openkylin/librelp.git
269 lines
8.6 KiB
Plaintext
269 lines
8.6 KiB
Plaintext
# -*- Autoconf -*-
|
|
# Process this file with autoconf to produce a configure script.
|
|
|
|
AC_PREREQ(2.61)
|
|
AC_INIT([librelp], [1.10.0], [rgerhards@adiscon.com])
|
|
|
|
# change to the one below if Travis has a timeout
|
|
#AM_INIT_AUTOMAKE([subdir-objects serial-tests])
|
|
AM_INIT_AUTOMAKE([subdir-objects])
|
|
|
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
|
AC_CONFIG_SRCDIR([src/relp.c])
|
|
AC_CONFIG_HEADER([config.h])
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
|
|
echo HOST: ${host}
|
|
case "${host}" in
|
|
*-*-linux*)
|
|
AC_DEFINE([OS_LINUX], [1], [Indicator for a Linux OS])
|
|
os_type="linux"
|
|
;;
|
|
*-*-*darwin*|*-*-dragonfly*|*-*-freebsd*|*-*-netbsd*|*-*-openbsd*)
|
|
AC_DEFINE([OS_BSD], [1], [Indicator for a BSD OS])
|
|
os_type="bsd"
|
|
;;
|
|
*-apple-*)
|
|
AC_DEFINE([OS_APPLE], [1], [Indicator for APPLE OS])
|
|
os_type="apple"
|
|
;;
|
|
*-*-kfreebsd*)
|
|
# kernel is FreeBSD, but userspace is glibc - i.e. like linux
|
|
# do not DEFINE OS_BSD
|
|
os_type="bsd"
|
|
;;
|
|
*-*-solaris*)
|
|
os_type="solaris"
|
|
AC_DEFINE([OS_SOLARIS], [1], [Indicator for a Solaris OS])
|
|
AC_DEFINE([_POSIX_PTHREAD_SEMANTICS], [1], [Use POSIX pthread semantics])
|
|
AC_DEFINE([_XOPEN_SOURCE], [600], [Use X/Open CAE Specification])
|
|
CPPFLAGS="-std=c99 $CPPFLAGS"
|
|
AM_CFLAGS="-std=c99 $CFLAGS"
|
|
SOL_LIBS="-lsocket -lnsl"
|
|
# Solaris libuuid does not ship with a pkgconfig file so override the appropriate
|
|
# variables (but only if they have not been set by the user).
|
|
LIBUUID_CFLAGS=${LIBUUID_CFLAGS:= }
|
|
LIBUUID_LIBS=${LIBUUID_LIBS:=-luuid}
|
|
AC_SUBST(SOL_LIBS)
|
|
;;
|
|
*-*-aix*)
|
|
os_type="aix"
|
|
AC_DEFINE([OS_AIX], [1], [Indicator for a AIX OS])
|
|
AM_CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT"
|
|
LDFLAGS="$LDFLAGS -brtl"
|
|
;;
|
|
esac
|
|
AM_CONDITIONAL(OS_APPLE, test x$os_type == xapple)
|
|
AM_CONDITIONAL(xOS_LINUX, test x$os_type == xlinux)
|
|
AM_CONDITIONAL(OS_LINUX, test x$os_type == xlinux)
|
|
AM_CONDITIONAL(OS_SOLARIS, test x$os_type == xsolaris)
|
|
AM_CONDITIONAL(OS_AIX, test "x$os_type" = "xaix")
|
|
|
|
AM_PATH_PYTHON(,, [:])
|
|
|
|
# Checks for programs.
|
|
AC_PROG_CC
|
|
AC_PROG_CC_C99
|
|
AM_PROG_CC_C_O
|
|
if test "$GCC" = "yes"
|
|
then AM_CFLAGS="$CFLAGS -W -Wall -Wformat-security -Wshadow -Wcast-align -Wpointer-arith -Wmissing-format-attribute -g"
|
|
fi
|
|
|
|
AC_PROG_LIBTOOL
|
|
|
|
PKG_PROG_PKG_CONFIG
|
|
|
|
if test "$GCC" = "yes"
|
|
then
|
|
m4_ifdef([AX_IS_RELEASE], [
|
|
AX_IS_RELEASE([git-directory])
|
|
m4_ifdef([AX_COMPILER_FLAGS], [
|
|
AX_COMPILER_FLAGS(,,,,[-pedantic -Wunused-parameter -Wmissing-field-initializers])
|
|
# unfortunately, AX_COMPILER_FLAGS does not provide a way to override
|
|
# the default -Wno-error=warning" flags. So we do this via sed below.
|
|
# Note: we *really* want to have this error out during CI testing!
|
|
# -Wdeclaration-after-statement in gcc always generates a warning,
|
|
# even in c99 mode. So we need to unset it.
|
|
# rgerhards, 2018-05-09
|
|
WARN_CFLAGS="$(echo "$WARN_CFLAGS" | sed s/-Wno-error=/-W/g | sed s/-W.*declaration-after-statement//g)"
|
|
], [
|
|
AM_CFLAGS="$CFLAGS -W -Wall -Wformat-security -Wshadow -Wcast-align -Wpointer-arith -Wmissing-format-attribute -g"
|
|
AC_MSG_WARN([missing AX_COMPILER_FLAGS macro, not using it])
|
|
])
|
|
], [
|
|
AM_CFLAGS="$CFLAGS -W -Wall -Wformat-security -Wshadow -Wcast-align -Wpointer-arith -Wmissing-format-attribute -g"
|
|
AC_MSG_WARN([missing AX_IS_RELEASE macro, not using AX_COMPILER_FLAGS macro because of this])
|
|
])
|
|
else
|
|
AC_MSG_WARN([compiler is not GCC or close compatible, not using ax_compiler_flags because of this (CC=$CC)])
|
|
fi
|
|
|
|
# Checks for libraries.
|
|
save_LIBS=$LIBS
|
|
LIBS=
|
|
AC_SEARCH_LIBS(clock_gettime, rt)
|
|
rt_libs=$LIBS
|
|
LIBS=$save_LIBS
|
|
|
|
AC_SUBST(rt_libs)
|
|
|
|
# Checks for header files.
|
|
AC_HEADER_STDC
|
|
AC_CHECK_HEADERS([sys/epoll.h])
|
|
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
AC_C_CONST
|
|
AC_TYPE_SIZE_T
|
|
#AC_HEADER_TIME
|
|
#AC_STRUCT_TM
|
|
|
|
AC_CHECK_MEMBERS([struct sockaddr.sa_len],,,[$sa_includes])
|
|
|
|
# Checks for library functions.
|
|
AC_FUNC_SELECT_ARGTYPES
|
|
AC_FUNC_STRERROR_R
|
|
AC_TYPE_SIGNAL
|
|
AC_CHECK_FUNCS([strerror_r strdup strndup epoll_create epoll_create1])
|
|
|
|
# enable TLS (may not be possible on platforms with too-old GnuTLS)
|
|
AC_ARG_ENABLE(tls,
|
|
[AS_HELP_STRING([--enable-tls],[Enable TLS support @<:@default=yes@:>@])],
|
|
[case "${enableval}" in
|
|
yes) enable_tls="yes" ;;
|
|
no) enable_tls="no" ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-tls) ;;
|
|
esac],
|
|
[enable_tls="yes"]
|
|
)
|
|
# enable Openssl TLS
|
|
AC_ARG_ENABLE(tls-openssl,
|
|
[AS_HELP_STRING([--enable-tls-openssl],[Enable OpenSSL TLS support @<:@default=yes@:>@])],
|
|
[case "${enableval}" in
|
|
yes) enable_tls_openssl="yes" ;;
|
|
no) enable_tls_openssl="no" ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-tls-openssl) ;;
|
|
esac],
|
|
[enable_tls_openssl="yes"]
|
|
)
|
|
|
|
if test "$enable_tls_openssl" = "yes"; then
|
|
PKG_CHECK_MODULES(OPENSSL, openssl)
|
|
AC_DEFINE([ENABLE_TLS_OPENSSL], [1], [Indicator that openssl is present])
|
|
enable_tls_generic="yes"
|
|
save_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS $OPENSSL_CFLAGS"
|
|
save_LIBS="$LIBS"
|
|
LIBS="$LIBS $OPENSSL_LIBS"
|
|
fi
|
|
AM_CONDITIONAL([ENABLE_TLS_OPENSSL], [test "$enable_tls_openssl" = "yes"])
|
|
|
|
if test "$enable_tls" = "yes"; then
|
|
PKG_CHECK_MODULES(GNUTLS, gnutls >= 2.0.0)
|
|
AC_DEFINE(ENABLE_TLS, 1, [Defined if TLS support is enabled])
|
|
enable_tls_generic="yes"
|
|
# Check if we have support for proper cert validation
|
|
AC_MSG_CHECKING(if we have gnutls_certificate_set_verify_function)
|
|
save_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS $GNUTLS_CFLAGS"
|
|
save_LIBS="$LIBS"
|
|
LIBS="$LIBS $GNUTLS_LIBS"
|
|
AC_TRY_LINK(
|
|
[
|
|
#include <gnutls/gnutls.h>
|
|
#include <gnutls/x509.h>
|
|
], [
|
|
gnutls_certificate_set_verify_function(NULL, NULL);
|
|
],[
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_GNUTLS_CERTIFICATE_SET_VERIFY_FUNCTION, 1, [do we have gnutls_certificate_set_verify_function])
|
|
have_gnutls_certificate_set_verify_function=yes
|
|
],[
|
|
AC_MSG_RESULT(no; authentication disabled)
|
|
have_gnutls_certificate_set_verify_function=no
|
|
]
|
|
)
|
|
CFLAGS="$save_CFLAGS"
|
|
LIBS="$save_LIBS"
|
|
fi
|
|
AM_CONDITIONAL(ENABLE_TLS, test "$enable_tls" = "yes")
|
|
AM_CONDITIONAL([ENABLE_TLS_GENERIC], [test "$enable_tls_generic" = "yes"])
|
|
|
|
if test "$enable_tls_generic" = "yes"; then
|
|
AC_DEFINE(WITH_TLS, 1, [Defined if TLS support is enabled])
|
|
fi
|
|
|
|
# enable Openssl TLS
|
|
AC_ARG_ENABLE(tls-openssl,
|
|
[AS_HELP_STRING([--enable-tls-openssl],[Enable OpenSSL TLS support @<:@default=yes@:>@])],
|
|
[case "${enableval}" in
|
|
yes) enable_tls_openssl="yes" ;;
|
|
no) enable_tls_openssl="no" ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-tls-openssl) ;;
|
|
esac],
|
|
[enable_tls_openssl="no"]
|
|
)
|
|
|
|
if test "$enable_tls_openssl" = "yes"; then
|
|
PKG_CHECK_MODULES(OPENSSL, openssl)
|
|
AC_DEFINE([ENABLE_TLS_OPENSSL], [1], [Indicator that openssl is present])
|
|
save_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS $OPENSSL_CFLAGS"
|
|
save_LIBS="$LIBS"
|
|
LIBS="$LIBS $OPENSSL_LIBS"
|
|
fi
|
|
AM_CONDITIONAL(ENABLE_TLS_OPENSSL, test x$enable_tls_openssl = xyes)
|
|
|
|
# debug mode settings
|
|
AC_ARG_ENABLE(debug,
|
|
[AS_HELP_STRING([--enable-debug],[Enable debug mode @<:@default=no@:>@])],
|
|
[case "${enableval}" in
|
|
yes) enable_debug="yes" ;;
|
|
no) enable_debug="no" ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
|
|
esac],
|
|
[enable_debug="no"]
|
|
)
|
|
if test "$enable_debug" = "yes"; then
|
|
AC_DEFINE(DEBUG, 1, [Defined if debug mode is enabled (it is easier to check in the code).])
|
|
fi
|
|
if test "$enable_debug" = "no"; then
|
|
AC_DEFINE(NDEBUG, 1, [Defined if debug mode is disabled.])
|
|
fi
|
|
|
|
# valgrind
|
|
AC_ARG_ENABLE(valgrind,
|
|
[AS_HELP_STRING([--enable-valgrind],[Enable valgrind tests@<:@default=yes@:>@])],
|
|
[case "${enableval}" in
|
|
yes) enable_valgrind="yes" ;;
|
|
no) enable_valgrind="no" ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for --enable-valgrind) ;;
|
|
esac],
|
|
[enable_valgrind="yes"]
|
|
)
|
|
if test "$enable_valgrind" = "yes"; then
|
|
AC_CHECK_PROG(VALGRIND, [valgrind], [valgrind], [no])
|
|
fi
|
|
AM_CONDITIONAL([HAVE_VALGRIND], test "$enable_valgrind" == "yes")
|
|
|
|
|
|
|
|
AC_CONFIG_FILES([Makefile \
|
|
relp.pc \
|
|
doc/Makefile \
|
|
tests/set-envvars \
|
|
tests/Makefile \
|
|
src/Makefile])
|
|
AC_OUTPUT
|
|
|
|
|
|
echo "*****************************************************"
|
|
echo "librelp will be compiled with the following settings:"
|
|
echo
|
|
echo "run valgrind in testbench: $enable_valgrind"
|
|
echo "Debug mode enabled: $enable_debug"
|
|
echo "GNUTLS enabled: $enable_tls"
|
|
echo "GNUTLS authentication supported: $have_gnutls_certificate_set_verify_function"
|
|
echo "OPENSSL enabled: $enable_tls_openssl"
|
|
echo "generic TLS tests enabled: $enable_tls_generic"
|
|
|