118 lines
3.4 KiB
Plaintext
118 lines
3.4 KiB
Plaintext
# -*- 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 <gcrypt.h>]])
|
|
|
|
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 <gnunet/platform.h>
|
|
#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
|