Codebase list librelp / scrub-obsolete/main configure.ac
scrub-obsolete/main

Tree @scrub-obsolete/main (Download .tar.gz)

configure.ac @scrub-obsolete/mainraw · history · blame

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.61)
AC_INIT([librelp], [1.11.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"