# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT([libbrandt], [0.1], [teichm@net.in.tum.de]) AM_INIT_AUTOMAKE([1.14]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([brandt.c]) AC_CONFIG_HEADERS([brandt_config.h]) # Checks for header files. AC_CHECK_HEADERS([stdint.h stdlib.h string.h unistd.h]) # Checks for programs. AC_PROG_CC_C99 LT_INIT([pic-only]) # fix std CC=$(echo "${CC}" | sed 's/-std=gnu99/-std=c99/') CPP=$(echo "${CPP}" | sed 's/-std=gnu99/-std=c99/') # Checks for typedefs, structures, and compiler characteristics. AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_UINT16_T AC_TYPE_UINT32_T AC_TYPE_UINT64_T AC_TYPE_INTMAX_T AC_TYPE_UINTMAX_T # Checks for libraries. AC_SEARCH_LIBS([gcry_check_version], [gcrypt], [], [AC_MSG_ERROR([unable to find the gcry_check_version() function from libgcrypt])]) # Checks for header files. AC_CHECK_HEADER(gcrypt.h, [], [AC_MSG_ERROR([unable to find the gcrypt.h header file from libgcrypt])], []) SAVE_LIBS=$LIBS # libgcrypt gcrypt=0 NEED_LIBGCRYPT_API=1 NEED_LIBGCRYPT_VERSION=1.7.0 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1) AC_CHECK_DECLS([gcry_mpi_ec_sub], [], [], [[#include ]]) if test $gcrypt = 0 then AC_MSG_ERROR([[ *** *** You need libgcrypt to build this program. ** This library is for example available at *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/ *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API) *** is required.) ***]]) fi AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version]) # libgnunetutil libgnunetutil=0 AC_MSG_CHECKING([for libgnunetutil]) AC_ARG_WITH(gnunet, [AS_HELP_STRING([--with-gnunet=PFX], [base of GNUnet installation])], [AC_MSG_RESULT([given as $with_gnunet])], [AC_MSG_RESULT(not given) with_gnunet=yes]) AS_CASE([$with_gnunet], [yes], [], [no], [AC_MSG_ERROR([--with-gnunet is required])], [LDFLAGS="-L$with_gnunet/lib $LDFLAGS" CPPFLAGS="-I$with_gnunet/include $CPPFLAGS"]) AC_CHECK_HEADERS([gnunet/platform.h gnunet/gnunet_util_lib.h], [AC_CHECK_LIB([gnunetutil], [GNUNET_SCHEDULER_run], libgnunetutil=1)], [], [#ifdef HAVE_GNUNET_PLATFORM_H #include #endif]) AS_IF([test $libgnunetutil != 1], [AC_MSG_ERROR([[ *** *** You need libgnunetutil to build this program. *** This library is part of GNUnet, available at *** https://gnunet.org *** ]])]) # restore LIBS LIBS=$SAVE_LIBS # Adam shostack suggests the following for Windows: # -D_FORTIFY_SOURCE=2 -fstack-protector-all AC_ARG_ENABLE(gcc-hardening, AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks), [if test x$enableval = xyes; then CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all" CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector" CFLAGS="$CFLAGS --param ssp-buffer-size=1" LDFLAGS="$LDFLAGS -pie" fi]) # Linker hardening options # Currently these options are ELF specific - you can't use this with MacOSX AC_ARG_ENABLE(linker-hardening, AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups), [if test x$enableval = xyes; then LDFLAGS="$LDFLAGS -z relro -z now" fi]) AC_CONFIG_FILES([ Makefile doc/Makefile ]) AC_OUTPUT