Blame configure.ac

Packit Service aec53c
# Configure.ac script for Libgcrypt
Packit Service aec53c
# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006,
Packit Service aec53c
#               2007, 2008, 2009, 2011 Free Software Foundation, Inc.
Packit Service aec53c
# Copyright (C) 2012-2017  g10 Code GmbH
Packit Service aec53c
#
Packit Service aec53c
# This file is part of Libgcrypt.
Packit Service aec53c
#
Packit Service aec53c
# Libgcrypt is free software; you can redistribute it and/or modify
Packit Service aec53c
# it under the terms of the GNU Lesser General Public License as
Packit Service aec53c
# published by the Free Software Foundation; either version 2.1 of
Packit Service aec53c
# the License, or (at your option) any later version.
Packit Service aec53c
#
Packit Service aec53c
# Libgcrypt is distributed in the hope that it will be useful,
Packit Service aec53c
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service aec53c
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service aec53c
# GNU Lesser General Public License for more details.
Packit Service aec53c
#
Packit Service aec53c
# You should have received a copy of the GNU Lesser General Public
Packit Service aec53c
# License along with this program; if not, see <http://www.gnu.org/licenses/>.
Packit Service aec53c
Packit Service aec53c
# (Process this file with autoconf to produce a configure script.)
Packit Service aec53c
AC_REVISION($Revision$)
Packit Service aec53c
AC_PREREQ(2.60)
Packit Service aec53c
min_automake_version="1.14"
Packit Service aec53c
Packit Service aec53c
# To build a release you need to create a tag with the version number
Packit Service aec53c
# (git tag -s libgcrypt-n.m.k) and run "./autogen.sh --force".  Please
Packit Service aec53c
# bump the version number immediately after the release and do another
Packit Service aec53c
# commit and push so that the git magic is able to work.  See below
Packit Service aec53c
# for the LT versions.
Packit Service aec53c
m4_define(mym4_version_major, [1])
Packit Service aec53c
m4_define(mym4_version_minor, [8])
Packit Service aec53c
m4_define(mym4_version_micro, [5])
Packit Service aec53c
Packit Service aec53c
# Below is m4 magic to extract and compute the revision number, the
Packit Service aec53c
# decimalized short revision number, a beta version string, and a flag
Packit Service aec53c
# indicating a development version (mym4_isgit). Note that the m4
Packit Service aec53c
# processing is done by autoconf and not during the configure run.
Packit Service aec53c
m4_define(mym4_version,
Packit Service aec53c
          [mym4_version_major.mym4_version_minor.mym4_version_micro])
Packit Service aec53c
m4_define([mym4_revision],
Packit Service aec53c
          m4_esyscmd([git rev-parse --short HEAD | tr -d '\n\r']))
Packit Service aec53c
m4_define([mym4_revision_dec],
Packit Service aec53c
          m4_esyscmd_s([echo $((0x$(echo ]mym4_revision[|head -c 4)))]))
Packit Service aec53c
m4_define([mym4_betastring],
Packit Service aec53c
          m4_esyscmd_s([git describe --match 'libgcrypt-[0-9].*[0-9]' --long|\
Packit Service aec53c
                        awk -F- '$3!=0{print"-beta"$3}']))
Packit Service aec53c
m4_define([mym4_isgit],m4_if(mym4_betastring,[],[no],[yes]))
Packit Service aec53c
m4_define([mym4_full_version],[mym4_version[]mym4_betastring])
Packit Service aec53c
Packit Service aec53c
AC_INIT([libgcrypt],[mym4_full_version],[http://bugs.gnupg.org])
Packit Service aec53c
Packit Service aec53c
# LT Version numbers: In this branch we only change the revision.
Packit Service aec53c
#   (Interfaces removed:    CURRENT++, AGE=0, REVISION=0)
Packit Service aec53c
#   (Interfaces added:      CURRENT++, AGE++, REVISION=0)
Packit Service aec53c
#   (No interfaces changed:                   REVISION++)
Packit Service aec53c
LIBGCRYPT_LT_CURRENT=22
Packit Service aec53c
LIBGCRYPT_LT_AGE=2
Packit Service aec53c
LIBGCRYPT_LT_REVISION=5
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# If the API is changed in an incompatible way: increment the next counter.
Packit Service aec53c
#
Packit Service aec53c
# 1.6: ABI and API change but the change is to most users irrelevant
Packit Service aec53c
#      and thus the API version number has not been incremented.
Packit Service aec53c
LIBGCRYPT_CONFIG_API_VERSION=1
Packit Service aec53c
Packit Service aec53c
# If you change the required gpg-error version, please remove
Packit Service aec53c
# unnecessary error code defines in src/gcrypt-int.h.
Packit Service aec53c
NEED_GPG_ERROR_VERSION=1.25
Packit Service aec53c
Packit Service aec53c
PACKAGE=$PACKAGE_NAME
Packit Service aec53c
VERSION=$PACKAGE_VERSION
Packit Service aec53c
Packit Service aec53c
AC_CONFIG_AUX_DIR([build-aux])
Packit Service aec53c
AC_CONFIG_SRCDIR([src/libgcrypt.vers])
Packit Service aec53c
AM_INIT_AUTOMAKE([serial-tests dist-bzip2])
Packit Service aec53c
AC_CONFIG_HEADER(config.h)
Packit Service aec53c
AC_CONFIG_MACRO_DIR([m4])
Packit Service aec53c
AC_CONFIG_LIBOBJ_DIR([compat])
Packit Service aec53c
AC_CANONICAL_HOST
Packit Service aec53c
AM_MAINTAINER_MODE
Packit Service aec53c
AM_SILENT_RULES
Packit Service aec53c
Packit Service aec53c
AC_ARG_VAR(SYSROOT,[locate config scripts also below that directory])
Packit Service aec53c
Packit Service aec53c
AH_TOP([
Packit Service aec53c
#ifndef _GCRYPT_CONFIG_H_INCLUDED
Packit Service aec53c
#define _GCRYPT_CONFIG_H_INCLUDED
Packit Service aec53c
Packit Service aec53c
/* Enable gpg-error's strerror macro for W32CE.  */
Packit Service aec53c
#define GPG_ERR_ENABLE_ERRNO_MACROS 1
Packit Service aec53c
])
Packit Service aec53c
Packit Service aec53c
AH_BOTTOM([
Packit Service aec53c
#define _GCRYPT_IN_LIBGCRYPT 1
Packit Service aec53c
Packit Service aec53c
/* If the configure check for endianness has been disabled, get it from
Packit Service aec53c
   OS macros.  This is intended for making fat binary builds on OS X.  */
Packit Service aec53c
#ifdef DISABLED_ENDIAN_CHECK
Packit Service aec53c
# if defined(__BIG_ENDIAN__)
Packit Service aec53c
#  define WORDS_BIGENDIAN 1
Packit Service aec53c
# elif defined(__LITTLE_ENDIAN__)
Packit Service aec53c
#  undef WORDS_BIGENDIAN
Packit Service aec53c
# else
Packit Service aec53c
#  error "No endianness found"
Packit Service aec53c
# endif
Packit Service aec53c
#endif /*DISABLED_ENDIAN_CHECK*/
Packit Service aec53c
Packit Service aec53c
/* We basically use the original Camellia source.  Make sure the symbols
Packit Service aec53c
   properly prefixed.  */
Packit Service aec53c
#define CAMELLIA_EXT_SYM_PREFIX _gcry_
Packit Service aec53c
Packit Service aec53c
#endif /*_GCRYPT_CONFIG_H_INCLUDED*/
Packit Service aec53c
])
Packit Service aec53c
Packit Service aec53c
AH_VERBATIM([_REENTRANT],
Packit Service aec53c
[/* To allow the use of Libgcrypt in multithreaded programs we have to use
Packit Service aec53c
    special features from the library. */
Packit Service aec53c
#ifndef _REENTRANT
Packit Service aec53c
# define _REENTRANT 1
Packit Service aec53c
#endif
Packit Service aec53c
])
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
AC_SUBST(LIBGCRYPT_LT_CURRENT)
Packit Service aec53c
AC_SUBST(LIBGCRYPT_LT_AGE)
Packit Service aec53c
AC_SUBST(LIBGCRYPT_LT_REVISION)
Packit Service aec53c
AC_SUBST(PACKAGE)
Packit Service aec53c
AC_SUBST(VERSION)
Packit Service aec53c
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
Packit Service aec53c
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
Packit Service aec53c
VERSION_NUMBER=m4_esyscmd(printf "0x%02x%02x%02x" mym4_version_major \
Packit Service aec53c
                          mym4_version_minor mym4_version_micro)
Packit Service aec53c
AC_SUBST(VERSION_NUMBER)
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
######################
Packit Service aec53c
##  Basic checks.  ### (we need some results later on (e.g. $GCC)
Packit Service aec53c
######################
Packit Service aec53c
Packit Service aec53c
AC_PROG_MAKE_SET
Packit Service aec53c
missing_dir=`cd $ac_aux_dir && pwd`
Packit Service aec53c
AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
Packit Service aec53c
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
Packit Service aec53c
AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
Packit Service aec53c
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
Packit Service aec53c
# AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
Packit Service aec53c
AC_PROG_CC
Packit Service aec53c
AC_PROG_CPP
Packit Service aec53c
AM_PROG_CC_C_O
Packit Service aec53c
AM_PROG_AS
Packit Service aec53c
AC_ISC_POSIX
Packit Service aec53c
AC_PROG_INSTALL
Packit Service aec53c
AC_PROG_AWK
Packit Service aec53c
Packit Service aec53c
AC_GNU_SOURCE
Packit Service aec53c
Packit Service aec53c
# We need to compile and run a program on the build machine.  A
Packit Service aec53c
# comment in libgpg-error says that the AC_PROG_CC_FOR_BUILD macro in
Packit Service aec53c
# the AC archive is broken for autoconf 2.57.  Given that there is no
Packit Service aec53c
# newer version of that macro, we assume that it is also broken for
Packit Service aec53c
# autoconf 2.61 and thus we use a simple but usually sufficient
Packit Service aec53c
# approach.
Packit Service aec53c
AC_MSG_CHECKING(for cc for build)
Packit Service aec53c
if test "$cross_compiling" = "yes"; then
Packit Service aec53c
  CC_FOR_BUILD="${CC_FOR_BUILD-cc}"
Packit Service aec53c
else
Packit Service aec53c
  CC_FOR_BUILD="${CC_FOR_BUILD-$CC}"
Packit Service aec53c
fi
Packit Service aec53c
AC_MSG_RESULT($CC_FOR_BUILD)
Packit Service aec53c
AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler])
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
LT_PREREQ([2.2.6])
Packit Service aec53c
LT_INIT([win32-dll disable-static])
Packit Service aec53c
LT_LANG([Windows Resource])
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
##########################
Packit Service aec53c
## General definitions. ##
Packit Service aec53c
##########################
Packit Service aec53c
Packit Service aec53c
# Used by libgcrypt-config
Packit Service aec53c
LIBGCRYPT_CONFIG_LIBS="-lgcrypt"
Packit Service aec53c
LIBGCRYPT_CONFIG_CFLAGS=""
Packit Service aec53c
LIBGCRYPT_CONFIG_HOST="$host"
Packit Service aec53c
Packit Service aec53c
# Definitions for symmetric ciphers.
Packit Service aec53c
available_ciphers="arcfour blowfish cast5 des aes twofish serpent rfc2268 seed"
Packit Service aec53c
available_ciphers="$available_ciphers camellia idea salsa20 gost28147 chacha20"
Packit Service aec53c
enabled_ciphers=""
Packit Service aec53c
Packit Service aec53c
# Definitions for public-key ciphers.
Packit Service aec53c
available_pubkey_ciphers="dsa elgamal rsa ecc"
Packit Service aec53c
enabled_pubkey_ciphers=""
Packit Service aec53c
Packit Service aec53c
# Definitions for message digests.
Packit Service aec53c
available_digests="crc gostr3411-94 md2 md4 md5 rmd160 sha1 sha256 sha512"
Packit Service aec53c
available_digests="$available_digests sha3 tiger whirlpool stribog blake2"
Packit Service aec53c
enabled_digests=""
Packit Service aec53c
Packit Service aec53c
# Definitions for kdfs (optional ones)
Packit Service aec53c
available_kdfs="s2k pkdf2 scrypt"
Packit Service aec53c
enabled_kdfs=""
Packit Service aec53c
Packit Service aec53c
# Definitions for random modules.
Packit Service aec53c
available_random_modules="linux egd unix"
Packit Service aec53c
auto_random_modules="$available_random_modules"
Packit Service aec53c
Packit Service aec53c
# Supported thread backends.
Packit Service aec53c
LIBGCRYPT_THREAD_MODULES=""
Packit Service aec53c
Packit Service aec53c
# Other definitions.
Packit Service aec53c
have_w32_system=no
Packit Service aec53c
have_w32ce_system=no
Packit Service aec53c
have_pthread=no
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# Setup some stuff depending on host.
Packit Service aec53c
case "${host}" in
Packit Service aec53c
    *-*-mingw32*)
Packit Service aec53c
      ac_cv_have_dev_random=no
Packit Service aec53c
      have_w32_system=yes
Packit Service aec53c
      case "${host}" in
Packit Service aec53c
        *-mingw32ce*)
Packit Service aec53c
            have_w32ce_system=yes
Packit Service aec53c
            available_random_modules="w32ce"
Packit Service aec53c
            ;;
Packit Service aec53c
        *)
Packit Service aec53c
            available_random_modules="w32"
Packit Service aec53c
            ;;
Packit Service aec53c
      esac
Packit Service aec53c
      AC_DEFINE(USE_ONLY_8DOT3,1,
Packit Service aec53c
                [set this to limit filenames to the 8.3 format])
Packit Service aec53c
      AC_DEFINE(HAVE_DRIVE_LETTERS,1,
Packit Service aec53c
                [defined if we must run on a stupid file system])
Packit Service aec53c
      AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
Packit Service aec53c
                [defined if we run on some of the PCDOS like systems
Packit Service aec53c
                 (DOS, Windoze. OS/2) with special properties like
Packit Service aec53c
                  no file modes])
Packit Service aec53c
      ;;
Packit Service aec53c
Packit Service aec53c
    i?86-emx-os2 | i?86-*-os2*emx)
Packit Service aec53c
        # OS/2 with the EMX environment
Packit Service aec53c
        ac_cv_have_dev_random=no
Packit Service aec53c
        AC_DEFINE(HAVE_DRIVE_LETTERS)
Packit Service aec53c
        AC_DEFINE(HAVE_DOSISH_SYSTEM)
Packit Service aec53c
        ;;
Packit Service aec53c
Packit Service aec53c
    i?86-*-msdosdjgpp*)
Packit Service aec53c
        # DOS with the DJGPP environment
Packit Service aec53c
        ac_cv_have_dev_random=no
Packit Service aec53c
        AC_DEFINE(HAVE_DRIVE_LETTERS)
Packit Service aec53c
        AC_DEFINE(HAVE_DOSISH_SYSTEM)
Packit Service aec53c
        ;;
Packit Service aec53c
Packit Service aec53c
    *-*-hpux*)
Packit Service aec53c
        if test -z "$GCC" ; then
Packit Service aec53c
            CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
Packit Service aec53c
        fi
Packit Service aec53c
        ;;
Packit Service aec53c
    *-dec-osf4*)
Packit Service aec53c
        if test -z "$GCC" ; then
Packit Service aec53c
            # Suppress all warnings
Packit Service aec53c
            # to get rid of the unsigned/signed char mismatch warnings.
Packit Service aec53c
            CFLAGS="$CFLAGS -w"
Packit Service aec53c
        fi
Packit Service aec53c
        ;;
Packit Service aec53c
    m68k-atari-mint)
Packit Service aec53c
        ;;
Packit Service aec53c
    *-apple-darwin*)
Packit Service aec53c
        AC_DEFINE(_DARWIN_C_SOURCE, 900000L,
Packit Service aec53c
                  Expose all libc features (__DARWIN_C_FULL).)
Packit Service aec53c
        ;;
Packit Service aec53c
    *)
Packit Service aec53c
      ;;
Packit Service aec53c
esac
Packit Service aec53c
Packit Service aec53c
if test "$have_w32_system" = yes; then
Packit Service aec53c
   AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
Packit Service aec53c
   if test "$have_w32ce_system" = yes; then
Packit Service aec53c
     AC_DEFINE(HAVE_W32CE_SYSTEM,1,[Defined if we run on WindowsCE])
Packit Service aec53c
   fi
Packit Service aec53c
fi
Packit Service aec53c
AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
Packit Service aec53c
AM_CONDITIONAL(HAVE_W32CE_SYSTEM, test "$have_w32ce_system" = yes)
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# A printable OS Name is sometimes useful.
Packit Service aec53c
case "${host}" in
Packit Service aec53c
    *-*-mingw32ce*)
Packit Service aec53c
        PRINTABLE_OS_NAME="W32CE"
Packit Service aec53c
        ;;
Packit Service aec53c
Packit Service aec53c
    *-*-mingw32*)
Packit Service aec53c
        PRINTABLE_OS_NAME="W32"
Packit Service aec53c
        ;;
Packit Service aec53c
Packit Service aec53c
    i?86-emx-os2 | i?86-*-os2*emx )
Packit Service aec53c
        PRINTABLE_OS_NAME="OS/2"
Packit Service aec53c
        ;;
Packit Service aec53c
Packit Service aec53c
    i?86-*-msdosdjgpp*)
Packit Service aec53c
        PRINTABLE_OS_NAME="MSDOS/DJGPP"
Packit Service aec53c
        ;;
Packit Service aec53c
Packit Service aec53c
    *-linux*)
Packit Service aec53c
        PRINTABLE_OS_NAME="GNU/Linux"
Packit Service aec53c
        ;;
Packit Service aec53c
Packit Service aec53c
    *)
Packit Service aec53c
        PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
Packit Service aec53c
        ;;
Packit Service aec53c
esac
Packit Service aec53c
Packit Service aec53c
NAME_OF_DEV_RANDOM="/dev/random"
Packit Service aec53c
NAME_OF_DEV_URANDOM="/dev/urandom"
Packit Service aec53c
Packit Service aec53c
AC_ARG_ENABLE(endian-check,
Packit Service aec53c
              AC_HELP_STRING([--disable-endian-check],
Packit Service aec53c
	      [disable the endian check and trust the OS provided macros]),
Packit Service aec53c
	      endiancheck=$enableval,endiancheck=yes)
Packit Service aec53c
if test x"$endiancheck" = xyes ; then
Packit Service aec53c
  AC_C_BIGENDIAN
Packit Service aec53c
else
Packit Service aec53c
  AC_DEFINE(DISABLED_ENDIAN_CHECK,1,[configure did not test for endianness])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
AC_CHECK_SIZEOF(unsigned short, 2)
Packit Service aec53c
AC_CHECK_SIZEOF(unsigned int, 4)
Packit Service aec53c
AC_CHECK_SIZEOF(unsigned long, 4)
Packit Service aec53c
AC_CHECK_SIZEOF(unsigned long long, 0)
Packit Service aec53c
AC_CHECK_SIZEOF(void *, 0)
Packit Service aec53c
Packit Service aec53c
AC_TYPE_UINTPTR_T
Packit Service aec53c
Packit Service aec53c
if test "$ac_cv_sizeof_unsigned_short" = "0" \
Packit Service aec53c
   || test "$ac_cv_sizeof_unsigned_int" = "0" \
Packit Service aec53c
   || test "$ac_cv_sizeof_unsigned_long" = "0"; then
Packit Service aec53c
    AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
# Ensure that we have UINT64_C before we bother to check for uint64_t
Packit Service aec53c
AC_CACHE_CHECK([for UINT64_C],[gnupg_cv_uint64_c_works],
Packit Service aec53c
   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <inttypes.h>]],
Packit Service aec53c
       [[uint64_t foo=UINT64_C(42);]])],
Packit Service aec53c
     gnupg_cv_uint64_c_works=yes,gnupg_cv_uint64_c_works=no))
Packit Service aec53c
if test "$gnupg_cv_uint64_c_works" = "yes" ; then
Packit Service aec53c
   AC_CHECK_SIZEOF(uint64_t)
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
# Do we have any 64-bit data types?
Packit Service aec53c
if test "$ac_cv_sizeof_unsigned_int" != "8" \
Packit Service aec53c
   && test "$ac_cv_sizeof_unsigned_long" != "8" \
Packit Service aec53c
   && test "$ac_cv_sizeof_unsigned_long_long" != "8" \
Packit Service aec53c
   && test "$ac_cv_sizeof_uint64_t" != "8"; then
Packit Service aec53c
    AC_MSG_ERROR([[
Packit Service aec53c
***
Packit Service aec53c
*** No 64-bit integer type available.
Packit Service aec53c
*** It is not possible to build Libgcrypt on this platform.
Packit Service aec53c
***]])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# If not specified otherwise, all available algorithms will be
Packit Service aec53c
# included.
Packit Service aec53c
default_ciphers="$available_ciphers"
Packit Service aec53c
default_pubkey_ciphers="$available_pubkey_ciphers"
Packit Service aec53c
default_digests="$available_digests"
Packit Service aec53c
default_kdfs="$available_kdfs"
Packit Service aec53c
# Blacklist MD2 by default
Packit Service aec53c
default_digests=`echo $default_digests | sed -e 's/md2//g'`
Packit Service aec53c
Packit Service aec53c
# Substitutions to set generated files in a Emacs buffer to read-only.
Packit Service aec53c
AC_SUBST(emacs_local_vars_begin, ['Local Variables:'])
Packit Service aec53c
AC_SUBST(emacs_local_vars_read_only, ['buffer-read-only: t'])
Packit Service aec53c
AC_SUBST(emacs_local_vars_end, ['End:'])
Packit Service aec53c
Packit Service aec53c
############################
Packit Service aec53c
## Command line switches. ##
Packit Service aec53c
############################
Packit Service aec53c
Packit Service aec53c
# Implementation of the --enable-ciphers switch.
Packit Service aec53c
AC_ARG_ENABLE(ciphers,
Packit Service aec53c
	      AC_HELP_STRING([--enable-ciphers=ciphers],
Packit Service aec53c
			     [select the symmetric ciphers to include]),
Packit Service aec53c
	      [enabled_ciphers=`echo $enableval | tr ',:' '  ' | tr '[A-Z]' '[a-z]'`],
Packit Service aec53c
	      [enabled_ciphers=""])
Packit Service aec53c
if test "x$enabled_ciphers" = "x" \
Packit Service aec53c
   -o "$enabled_ciphers" = "yes"  \
Packit Service aec53c
   -o "$enabled_ciphers" = "no"; then
Packit Service aec53c
   enabled_ciphers=$default_ciphers
Packit Service aec53c
fi
Packit Service aec53c
AC_MSG_CHECKING([which symmetric ciphers to include])
Packit Service aec53c
for cipher in $enabled_ciphers; do
Packit Service aec53c
    LIST_MEMBER($cipher, $available_ciphers)
Packit Service aec53c
    if test "$found" = "0"; then
Packit Service aec53c
       AC_MSG_ERROR([unsupported cipher "$cipher" specified])
Packit Service aec53c
    fi
Packit Service aec53c
done
Packit Service aec53c
AC_MSG_RESULT([$enabled_ciphers])
Packit Service aec53c
Packit Service aec53c
# Implementation of the --enable-pubkey-ciphers switch.
Packit Service aec53c
AC_ARG_ENABLE(pubkey-ciphers,
Packit Service aec53c
	      AC_HELP_STRING([--enable-pubkey-ciphers=ciphers],
Packit Service aec53c
			     [select the public-key ciphers to include]),
Packit Service aec53c
	      [enabled_pubkey_ciphers=`echo $enableval | tr ',:' '  ' | tr '[A-Z]' '[a-z]'`],
Packit Service aec53c
	      [enabled_pubkey_ciphers=""])
Packit Service aec53c
if test "x$enabled_pubkey_ciphers" = "x" \
Packit Service aec53c
   -o "$enabled_pubkey_ciphers" = "yes"  \
Packit Service aec53c
   -o "$enabled_pubkey_ciphers" = "no"; then
Packit Service aec53c
   enabled_pubkey_ciphers=$default_pubkey_ciphers
Packit Service aec53c
fi
Packit Service aec53c
AC_MSG_CHECKING([which public-key ciphers to include])
Packit Service aec53c
for cipher in $enabled_pubkey_ciphers; do
Packit Service aec53c
    LIST_MEMBER($cipher, $available_pubkey_ciphers)
Packit Service aec53c
    if test "$found" = "0"; then
Packit Service aec53c
       AC_MSG_ERROR([unsupported public-key cipher specified])
Packit Service aec53c
    fi
Packit Service aec53c
done
Packit Service aec53c
AC_MSG_RESULT([$enabled_pubkey_ciphers])
Packit Service aec53c
Packit Service aec53c
# Implementation of the --enable-digests switch.
Packit Service aec53c
AC_ARG_ENABLE(digests,
Packit Service aec53c
	      AC_HELP_STRING([--enable-digests=digests],
Packit Service aec53c
			     [select the message digests to include]),
Packit Service aec53c
	      [enabled_digests=`echo $enableval | tr ',:' '  ' | tr '[A-Z]' '[a-z]'`],
Packit Service aec53c
	      [enabled_digests=""])
Packit Service aec53c
if test "x$enabled_digests" = "x" \
Packit Service aec53c
   -o "$enabled_digests" = "yes"  \
Packit Service aec53c
   -o "$enabled_digests" = "no"; then
Packit Service aec53c
   enabled_digests=$default_digests
Packit Service aec53c
fi
Packit Service aec53c
AC_MSG_CHECKING([which message digests to include])
Packit Service aec53c
for digest in $enabled_digests; do
Packit Service aec53c
    LIST_MEMBER($digest, $available_digests)
Packit Service aec53c
    if test "$found" = "0"; then
Packit Service aec53c
       AC_MSG_ERROR([unsupported message digest specified])
Packit Service aec53c
    fi
Packit Service aec53c
done
Packit Service aec53c
AC_MSG_RESULT([$enabled_digests])
Packit Service aec53c
Packit Service aec53c
# Implementation of the --enable-kdfs switch.
Packit Service aec53c
AC_ARG_ENABLE(kdfs,
Packit Service aec53c
      AC_HELP_STRING([--enable-kfds=kdfs],
Packit Service aec53c
		     [select the KDFs to include]),
Packit Service aec53c
      [enabled_kdfs=`echo $enableval | tr ',:' '  ' | tr '[A-Z]' '[a-z]'`],
Packit Service aec53c
      [enabled_kdfs=""])
Packit Service aec53c
if test "x$enabled_kdfs" = "x" \
Packit Service aec53c
   -o "$enabled_kdfs" = "yes"  \
Packit Service aec53c
   -o "$enabled_kdfs" = "no"; then
Packit Service aec53c
   enabled_kdfs=$default_kdfs
Packit Service aec53c
fi
Packit Service aec53c
AC_MSG_CHECKING([which key derivation functions to include])
Packit Service aec53c
for kdf in $enabled_kdfs; do
Packit Service aec53c
    LIST_MEMBER($kdf, $available_kdfs)
Packit Service aec53c
    if test "$found" = "0"; then
Packit Service aec53c
       AC_MSG_ERROR([unsupported key derivation function specified])
Packit Service aec53c
    fi
Packit Service aec53c
done
Packit Service aec53c
AC_MSG_RESULT([$enabled_kdfs])
Packit Service aec53c
Packit Service aec53c
# Implementation of the --enable-random switch.
Packit Service aec53c
AC_ARG_ENABLE(random,
Packit Service aec53c
	      AC_HELP_STRING([--enable-random=name],
Packit Service aec53c
	                     [select which random number generator to use]),
Packit Service aec53c
	      [random=`echo $enableval | tr '[A-Z]' '[a-z]'`],
Packit Service aec53c
	      [])
Packit Service aec53c
if test "x$random" = "x" -o "$random" = "yes" -o "$random" = "no"; then
Packit Service aec53c
    random=default
Packit Service aec53c
fi
Packit Service aec53c
AC_MSG_CHECKING([which random module to use])
Packit Service aec53c
if test "$random" != "default" -a "$random" != "auto"; then
Packit Service aec53c
    LIST_MEMBER($random, $available_random_modules)
Packit Service aec53c
    if test "$found" = "0"; then
Packit Service aec53c
       AC_MSG_ERROR([unsupported random module specified])
Packit Service aec53c
    fi
Packit Service aec53c
fi
Packit Service aec53c
AC_MSG_RESULT($random)
Packit Service aec53c
Packit Service aec53c
# Implementation of the --disable-dev-random switch.
Packit Service aec53c
AC_MSG_CHECKING([whether use of /dev/random is requested])
Packit Service aec53c
AC_ARG_ENABLE(dev-random,
Packit Service aec53c
[  --disable-dev-random    disable the use of dev random],
Packit Service aec53c
    try_dev_random=$enableval, try_dev_random=yes)
Packit Service aec53c
AC_MSG_RESULT($try_dev_random)
Packit Service aec53c
Packit Service aec53c
# Implementation of the --with-egd-socket switch.
Packit Service aec53c
AC_ARG_WITH(egd-socket,
Packit Service aec53c
    [  --with-egd-socket=NAME  Use NAME for the EGD socket)],
Packit Service aec53c
            egd_socket_name="$withval", egd_socket_name="" )
Packit Service aec53c
AC_DEFINE_UNQUOTED(EGD_SOCKET_NAME, "$egd_socket_name",
Packit Service aec53c
                   [Define if you don't want the default EGD socket name.
Packit Service aec53c
                    For details see cipher/rndegd.c])
Packit Service aec53c
Packit Service aec53c
# Implementation of the --enable-random-daemon
Packit Service aec53c
AC_MSG_CHECKING([whether the experimental random daemon is requested])
Packit Service aec53c
AC_ARG_ENABLE([random-daemon],
Packit Service aec53c
              AC_HELP_STRING([--enable-random-daemon],
Packit Service aec53c
                             [Build and support the experimental gcryptrnd]),
Packit Service aec53c
              [use_random_daemon=$enableval],
Packit Service aec53c
              [use_random_daemon=no])
Packit Service aec53c
AC_MSG_RESULT($use_random_daemon)
Packit Service aec53c
if test x$use_random_daemon = xyes ; then
Packit Service aec53c
    AC_DEFINE(USE_RANDOM_DAEMON,1,
Packit Service aec53c
              [Define to support the experimental random daemon])
Packit Service aec53c
fi
Packit Service aec53c
AM_CONDITIONAL(USE_RANDOM_DAEMON, test x$use_random_daemon = xyes)
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# Implementation of --disable-asm.
Packit Service aec53c
AC_MSG_CHECKING([whether MPI assembler modules are requested])
Packit Service aec53c
AC_ARG_ENABLE([asm],
Packit Service aec53c
              AC_HELP_STRING([--disable-asm],
Packit Service aec53c
	                     [Disable MPI assembler modules]),
Packit Service aec53c
              [try_asm_modules=$enableval],
Packit Service aec53c
              [try_asm_modules=yes])
Packit Service aec53c
AC_MSG_RESULT($try_asm_modules)
Packit Service aec53c
Packit Service aec53c
# Implementation of the --enable-m-guard switch.
Packit Service aec53c
AC_MSG_CHECKING([whether memory guard is requested])
Packit Service aec53c
AC_ARG_ENABLE(m-guard,
Packit Service aec53c
              AC_HELP_STRING([--enable-m-guard],
Packit Service aec53c
                             [Enable memory guard facility]),
Packit Service aec53c
              [use_m_guard=$enableval], [use_m_guard=no])
Packit Service aec53c
AC_MSG_RESULT($use_m_guard)
Packit Service aec53c
if test "$use_m_guard" = yes ; then
Packit Service aec53c
    AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
# Implementation of the --enable-large-data-tests switch.
Packit Service aec53c
AC_MSG_CHECKING([whether to run large data tests])
Packit Service aec53c
AC_ARG_ENABLE(large-data-tests,
Packit Service aec53c
              AC_HELP_STRING([--enable-large-data-tests],
Packit Service aec53c
                 [Enable the real long ruinning large data tests]),
Packit Service aec53c
	      large_data_tests=$enableval,large_data_tests=no)
Packit Service aec53c
AC_MSG_RESULT($large_data_tests)
Packit Service aec53c
AC_SUBST(RUN_LARGE_DATA_TESTS, $large_data_tests)
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# Implementation of the --with-capabilities switch.
Packit Service aec53c
# Check whether we want to use Linux capabilities
Packit Service aec53c
AC_MSG_CHECKING([whether use of capabilities is requested])
Packit Service aec53c
AC_ARG_WITH(capabilities,
Packit Service aec53c
            AC_HELP_STRING([--with-capabilities],
Packit Service aec53c
                           [Use linux capabilities [default=no]]),
Packit Service aec53c
            [use_capabilities="$withval"],[use_capabilities=no])
Packit Service aec53c
AC_MSG_RESULT($use_capabilities)
Packit Service aec53c
Packit Service aec53c
# Implementation of the --enable-hmac-binary-check.
Packit Service aec53c
AC_MSG_CHECKING([whether a HMAC binary check is requested])
Packit Service aec53c
AC_ARG_ENABLE(hmac-binary-check,
Packit Service aec53c
              AC_HELP_STRING([--enable-hmac-binary-check],
Packit Service aec53c
                             [Enable library integrity check]),
Packit Service aec53c
              [use_hmac_binary_check=$enableval],
Packit Service aec53c
              [use_hmac_binary_check=no])
Packit Service aec53c
AC_MSG_RESULT($use_hmac_binary_check)
Packit Service aec53c
if test "$use_hmac_binary_check" = yes ; then
Packit Service aec53c
    AC_DEFINE(ENABLE_HMAC_BINARY_CHECK,1,
Packit Service aec53c
              [Define to support an HMAC based integrity check])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# Implementation of the --disable-jent-support switch.
Packit Service aec53c
AC_MSG_CHECKING([whether jitter entropy support is requested])
Packit Service aec53c
AC_ARG_ENABLE(jent-support,
Packit Service aec53c
              AC_HELP_STRING([--disable-jent-support],
Packit Service aec53c
                        [Disable support for the Jitter entropy collector]),
Packit Service aec53c
	      jentsupport=$enableval,jentsupport=yes)
Packit Service aec53c
AC_MSG_RESULT($jentsupport)
Packit Service aec53c
Packit Service aec53c
# Implementation of the --disable-padlock-support switch.
Packit Service aec53c
AC_MSG_CHECKING([whether padlock support is requested])
Packit Service aec53c
AC_ARG_ENABLE(padlock-support,
Packit Service aec53c
              AC_HELP_STRING([--disable-padlock-support],
Packit Service aec53c
       	         [Disable support for the PadLock Engine of VIA processors]),
Packit Service aec53c
	      padlocksupport=$enableval,padlocksupport=yes)
Packit Service aec53c
AC_MSG_RESULT($padlocksupport)
Packit Service aec53c
Packit Service aec53c
# Implementation of the --disable-aesni-support switch.
Packit Service aec53c
AC_MSG_CHECKING([whether AESNI support is requested])
Packit Service aec53c
AC_ARG_ENABLE(aesni-support,
Packit Service aec53c
              AC_HELP_STRING([--disable-aesni-support],
Packit Service aec53c
                 [Disable support for the Intel AES-NI instructions]),
Packit Service aec53c
	      aesnisupport=$enableval,aesnisupport=yes)
Packit Service aec53c
AC_MSG_RESULT($aesnisupport)
Packit Service aec53c
Packit Service aec53c
# Implementation of the --disable-pclmul-support switch.
Packit Service aec53c
AC_MSG_CHECKING([whether PCLMUL support is requested])
Packit Service aec53c
AC_ARG_ENABLE(pclmul-support,
Packit Service aec53c
              AC_HELP_STRING([--disable-pclmul-support],
Packit Service aec53c
                 [Disable support for the Intel PCLMUL instructions]),
Packit Service aec53c
	      pclmulsupport=$enableval,pclmulsupport=yes)
Packit Service aec53c
AC_MSG_RESULT($pclmulsupport)
Packit Service aec53c
Packit Service aec53c
# Implementation of the --disable-sse41-support switch.
Packit Service aec53c
AC_MSG_CHECKING([whether SSE4.1 support is requested])
Packit Service aec53c
AC_ARG_ENABLE(sse41-support,
Packit Service aec53c
              AC_HELP_STRING([--disable-sse41-support],
Packit Service aec53c
                 [Disable support for the Intel SSE4.1 instructions]),
Packit Service aec53c
	      sse41support=$enableval,sse41support=yes)
Packit Service aec53c
AC_MSG_RESULT($sse41support)
Packit Service aec53c
Packit Service aec53c
# Implementation of the --disable-drng-support switch.
Packit Service aec53c
AC_MSG_CHECKING([whether DRNG support is requested])
Packit Service aec53c
AC_ARG_ENABLE(drng-support,
Packit Service aec53c
              AC_HELP_STRING([--disable-drng-support],
Packit Service aec53c
                 [Disable support for the Intel DRNG (RDRAND instruction)]),
Packit Service aec53c
	      drngsupport=$enableval,drngsupport=yes)
Packit Service aec53c
AC_MSG_RESULT($drngsupport)
Packit Service aec53c
Packit Service aec53c
# Implementation of the --disable-avx-support switch.
Packit Service aec53c
AC_MSG_CHECKING([whether AVX support is requested])
Packit Service aec53c
AC_ARG_ENABLE(avx-support,
Packit Service aec53c
              AC_HELP_STRING([--disable-avx-support],
Packit Service aec53c
                 [Disable support for the Intel AVX instructions]),
Packit Service aec53c
	      avxsupport=$enableval,avxsupport=yes)
Packit Service aec53c
AC_MSG_RESULT($avxsupport)
Packit Service aec53c
Packit Service aec53c
# Implementation of the --disable-avx2-support switch.
Packit Service aec53c
AC_MSG_CHECKING([whether AVX2 support is requested])
Packit Service aec53c
AC_ARG_ENABLE(avx2-support,
Packit Service aec53c
              AC_HELP_STRING([--disable-avx2-support],
Packit Service aec53c
                 [Disable support for the Intel AVX2 instructions]),
Packit Service aec53c
	      avx2support=$enableval,avx2support=yes)
Packit Service aec53c
AC_MSG_RESULT($avx2support)
Packit Service aec53c
Packit Service aec53c
# Implementation of the --disable-neon-support switch.
Packit Service aec53c
AC_MSG_CHECKING([whether NEON support is requested])
Packit Service aec53c
AC_ARG_ENABLE(neon-support,
Packit Service aec53c
              AC_HELP_STRING([--disable-neon-support],
Packit Service aec53c
                 [Disable support for the ARM NEON instructions]),
Packit Service aec53c
	      neonsupport=$enableval,neonsupport=yes)
Packit Service aec53c
AC_MSG_RESULT($neonsupport)
Packit Service aec53c
Packit Service aec53c
# Implementation of the --disable-arm-crypto-support switch.
Packit Service aec53c
AC_MSG_CHECKING([whether ARMv8 Crypto Extension support is requested])
Packit Service aec53c
AC_ARG_ENABLE(arm-crypto-support,
Packit Service aec53c
              AC_HELP_STRING([--disable-arm-crypto-support],
Packit Service aec53c
                 [Disable support for the ARMv8 Crypto Extension instructions]),
Packit Service aec53c
	      armcryptosupport=$enableval,armcryptosupport=yes)
Packit Service aec53c
AC_MSG_RESULT($armcryptosupport)
Packit Service aec53c
Packit Service aec53c
# Implementation of the --disable-O-flag-munging switch.
Packit Service aec53c
AC_MSG_CHECKING([whether a -O flag munging is requested])
Packit Service aec53c
AC_ARG_ENABLE([O-flag-munging],
Packit Service aec53c
              AC_HELP_STRING([--disable-O-flag-munging],
Packit Service aec53c
                 [Disable modification of the cc -O flag]),
Packit Service aec53c
              [enable_o_flag_munging=$enableval],
Packit Service aec53c
              [enable_o_flag_munging=yes])
Packit Service aec53c
AC_MSG_RESULT($enable_o_flag_munging)
Packit Service aec53c
AM_CONDITIONAL(ENABLE_O_FLAG_MUNGING, test "$enable_o_flag_munging" = "yes")
Packit Service aec53c
Packit Service aec53c
# Implementation of the --disable-amd64-as-feature-detection switch.
Packit Service aec53c
AC_MSG_CHECKING([whether to enable AMD64 as(1) feature detection])
Packit Service aec53c
AC_ARG_ENABLE(amd64-as-feature-detection,
Packit Service aec53c
              AC_HELP_STRING([--disable-amd64-as-feature-detection],
Packit Service aec53c
                 [Disable the auto-detection of AMD64 as(1) features]),
Packit Service aec53c
	      amd64_as_feature_detection=$enableval,
Packit Service aec53c
              amd64_as_feature_detection=yes)
Packit Service aec53c
AC_MSG_RESULT($amd64_as_feature_detection)
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
Packit Service aec53c
                   [A human readable text with the name of the OS])
Packit Service aec53c
Packit Service aec53c
# For some systems we know that we have ld_version scripts.
Packit Service aec53c
# Use it then as default.
Packit Service aec53c
have_ld_version_script=no
Packit Service aec53c
case "${host}" in
Packit Service aec53c
    *-*-linux*)
Packit Service aec53c
	have_ld_version_script=yes
Packit Service aec53c
        ;;
Packit Service aec53c
    *-*-gnu*)
Packit Service aec53c
	have_ld_version_script=yes
Packit Service aec53c
        ;;
Packit Service aec53c
esac
Packit Service aec53c
AC_ARG_ENABLE([ld-version-script],
Packit Service aec53c
              AC_HELP_STRING([--enable-ld-version-script],
Packit Service aec53c
                             [enable/disable use of linker version script.
Packit Service aec53c
                              (default is system dependent)]),
Packit Service aec53c
              [have_ld_version_script=$enableval],
Packit Service aec53c
              [ : ] )
Packit Service aec53c
AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
Packit Service aec53c
Packit Service aec53c
AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM",
Packit Service aec53c
                   [defined to the name of the strong random device])
Packit Service aec53c
AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM",
Packit Service aec53c
                   [defined to the name of the weaker random device])
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
###############################
Packit Service aec53c
#### Checks for libraries. ####
Packit Service aec53c
###############################
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# gpg-error is required.
Packit Service aec53c
#
Packit Service aec53c
AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION")
Packit Service aec53c
if test "x$GPG_ERROR_LIBS" = "x"; then
Packit Service aec53c
  AC_MSG_ERROR([libgpg-error is needed.
Packit Service aec53c
                See ftp://ftp.gnupg.org/gcrypt/libgpg-error/ .])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
AC_DEFINE(GPG_ERR_SOURCE_DEFAULT, GPG_ERR_SOURCE_GCRYPT,
Packit Service aec53c
          [The default error source for libgcrypt.])
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether the GNU Pth library is available.  We require this
Packit Service aec53c
# to build the optional gcryptrnd program.
Packit Service aec53c
#
Packit Service aec53c
AC_ARG_WITH(pth-prefix,
Packit Service aec53c
            AC_HELP_STRING([--with-pth-prefix=PFX],
Packit Service aec53c
                           [prefix where GNU Pth is installed (optional)]),
Packit Service aec53c
     pth_config_prefix="$withval", pth_config_prefix="")
Packit Service aec53c
if test x$pth_config_prefix != x ; then
Packit Service aec53c
   PTH_CONFIG="$pth_config_prefix/bin/pth-config"
Packit Service aec53c
fi
Packit Service aec53c
if test "$use_random_daemon" = "yes"; then
Packit Service aec53c
  AC_PATH_PROG(PTH_CONFIG, pth-config, no)
Packit Service aec53c
  if test "$PTH_CONFIG" = "no"; then
Packit Service aec53c
    AC_MSG_WARN([[
Packit Service aec53c
***
Packit Service aec53c
*** To build the Libgcrypt's random number daemon
Packit Service aec53c
*** we need the support of the GNU Portable Threads Library.
Packit Service aec53c
*** Download it from ftp://ftp.gnu.org/gnu/pth/
Packit Service aec53c
*** On a Debian GNU/Linux system you might want to try
Packit Service aec53c
***   apt-get install libpth-dev
Packit Service aec53c
***]])
Packit Service aec53c
  else
Packit Service aec53c
    GNUPG_PTH_VERSION_CHECK([1.3.7])
Packit Service aec53c
    if test $have_pth = yes; then
Packit Service aec53c
       PTH_CFLAGS=`$PTH_CONFIG --cflags`
Packit Service aec53c
       PTH_LIBS=`$PTH_CONFIG --ldflags`
Packit Service aec53c
       PTH_LIBS="$PTH_LIBS `$PTH_CONFIG --libs --all`"
Packit Service aec53c
       AC_DEFINE(USE_GNU_PTH, 1,
Packit Service aec53c
                [Defined if the GNU Portable Thread Library should be used])
Packit Service aec53c
       AC_DEFINE(HAVE_PTH, 1,
Packit Service aec53c
                [Defined if the GNU Pth is available])
Packit Service aec53c
    fi
Packit Service aec53c
  fi
Packit Service aec53c
fi
Packit Service aec53c
AC_SUBST(PTH_CFLAGS)
Packit Service aec53c
AC_SUBST(PTH_LIBS)
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether pthreads is available
Packit Service aec53c
#
Packit Service aec53c
if test "$have_w32_system" != yes; then
Packit Service aec53c
  AC_CHECK_LIB(pthread,pthread_create,have_pthread=yes)
Packit Service aec53c
  if test "$have_pthread" = yes; then
Packit Service aec53c
    AC_DEFINE(HAVE_PTHREAD, 1 ,[Define if we have pthread.])
Packit Service aec53c
  fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# Solaris needs -lsocket and -lnsl. Unisys system includes
Packit Service aec53c
# gethostbyname in libsocket but needs libnsl for socket.
Packit Service aec53c
AC_SEARCH_LIBS(setsockopt, [socket], ,
Packit Service aec53c
	[AC_SEARCH_LIBS(setsockopt, [socket], , , [-lnsl])])
Packit Service aec53c
AC_SEARCH_LIBS(setsockopt, [nsl])
Packit Service aec53c
Packit Service aec53c
##################################
Packit Service aec53c
#### Checks for header files. ####
Packit Service aec53c
##################################
Packit Service aec53c
Packit Service aec53c
AC_HEADER_STDC
Packit Service aec53c
AC_CHECK_HEADERS(unistd.h sys/select.h sys/msg.h)
Packit Service aec53c
INSERT_SYS_SELECT_H=
Packit Service aec53c
if test x"$ac_cv_header_sys_select_h" = xyes; then
Packit Service aec53c
  INSERT_SYS_SELECT_H=" include <sys/select.h>"
Packit Service aec53c
fi
Packit Service aec53c
AC_SUBST(INSERT_SYS_SELECT_H)
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
##########################################
Packit Service aec53c
#### Checks for typedefs, structures, ####
Packit Service aec53c
####  and compiler characteristics.   ####
Packit Service aec53c
##########################################
Packit Service aec53c
Packit Service aec53c
AC_C_CONST
Packit Service aec53c
AC_C_INLINE
Packit Service aec53c
AC_TYPE_SIZE_T
Packit Service aec53c
AC_TYPE_SIGNAL
Packit Service aec53c
AC_DECL_SYS_SIGLIST
Packit Service aec53c
AC_TYPE_PID_T
Packit Service aec53c
Packit Service aec53c
GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
Packit Service aec53c
GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
Packit Service aec53c
GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
Packit Service aec53c
GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
Packit Service aec53c
GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
Packit Service aec53c
Packit Service aec53c
gl_TYPE_SOCKLEN_T
Packit Service aec53c
case "${host}" in
Packit Service aec53c
  *-*-mingw32*)
Packit Service aec53c
    # socklen_t may or may not be defined depending on what headers
Packit Service aec53c
    # are included.  To be safe we use int as this is the actual type.
Packit Service aec53c
    FALLBACK_SOCKLEN_T="typedef int gcry_socklen_t;"
Packit Service aec53c
    ;;
Packit Service aec53c
  *)
Packit Service aec53c
    if test ".$gl_cv_socklen_t_equiv" = "."; then
Packit Service aec53c
      FALLBACK_SOCKLEN_T="typedef socklen_t gcry_socklen_t;"
Packit Service aec53c
    else
Packit Service aec53c
      FALLBACK_SOCKLEN_T="typedef ${gl_cv_socklen_t_equiv} gcry_socklen_t;"
Packit Service aec53c
    fi
Packit Service aec53c
esac
Packit Service aec53c
AC_SUBST(FALLBACK_SOCKLEN_T)
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check for __builtin_bswap32 intrinsic.
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK(for __builtin_bswap32,
Packit Service aec53c
       [gcry_cv_have_builtin_bswap32],
Packit Service aec53c
       [gcry_cv_have_builtin_bswap32=no
Packit Service aec53c
        AC_LINK_IFELSE([AC_LANG_PROGRAM([],
Packit Service aec53c
          [int x = 0; int y = __builtin_bswap32(x); return y;])],
Packit Service aec53c
          [gcry_cv_have_builtin_bswap32=yes])])
Packit Service aec53c
if test "$gcry_cv_have_builtin_bswap32" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_BUILTIN_BSWAP32,1,
Packit Service aec53c
             [Defined if compiler has '__builtin_bswap32' intrinsic])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check for __builtin_bswap64 intrinsic.
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK(for __builtin_bswap64,
Packit Service aec53c
       [gcry_cv_have_builtin_bswap64],
Packit Service aec53c
       [gcry_cv_have_builtin_bswap64=no
Packit Service aec53c
        AC_LINK_IFELSE([AC_LANG_PROGRAM([],
Packit Service aec53c
          [long long x = 0; long long y = __builtin_bswap64(x); return y;])],
Packit Service aec53c
          [gcry_cv_have_builtin_bswap64=yes])])
Packit Service aec53c
if test "$gcry_cv_have_builtin_bswap64" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_BUILTIN_BSWAP64,1,
Packit Service aec53c
             [Defined if compiler has '__builtin_bswap64' intrinsic])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check for __builtin_ctz intrinsic.
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK(for __builtin_ctz,
Packit Service aec53c
       [gcry_cv_have_builtin_ctz],
Packit Service aec53c
       [gcry_cv_have_builtin_ctz=no
Packit Service aec53c
        AC_LINK_IFELSE([AC_LANG_PROGRAM([],
Packit Service aec53c
          [unsigned int x = 0; int y = __builtin_ctz(x); return y;])],
Packit Service aec53c
          [gcry_cv_have_builtin_ctz=yes])])
Packit Service aec53c
if test "$gcry_cv_have_builtin_ctz" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_BUILTIN_CTZ, 1,
Packit Service aec53c
             [Defined if compiler has '__builtin_ctz' intrinsic])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check for VLA support (variable length arrays).
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK(whether the variable length arrays are supported,
Packit Service aec53c
       [gcry_cv_have_vla],
Packit Service aec53c
       [gcry_cv_have_vla=no
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[void f1(char *, int);
Packit Service aec53c
            char foo(int i) {
Packit Service aec53c
              char b[(i < 0 ? 0 : i) + 1];
Packit Service aec53c
              f1(b, sizeof b); return b[0];}]])],
Packit Service aec53c
          [gcry_cv_have_vla=yes])])
Packit Service aec53c
if test "$gcry_cv_have_vla" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_VLA,1, [Defined if variable length arrays are supported])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check for ELF visibility support.
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK(whether the visibility attribute is supported,
Packit Service aec53c
       gcry_cv_visibility_attribute,
Packit Service aec53c
       [gcry_cv_visibility_attribute=no
Packit Service aec53c
        AC_LANG_CONFTEST([AC_LANG_SOURCE(
Packit Service aec53c
          [[int foo __attribute__ ((visibility ("hidden"))) = 1;
Packit Service aec53c
            int bar __attribute__ ((visibility ("protected"))) = 1;
Packit Service aec53c
          ]])])
Packit Service aec53c
Packit Service aec53c
        if ${CC-cc} -Werror -S conftest.c -o conftest.s \
Packit Service aec53c
                  1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
Packit Service aec53c
            if grep '\.hidden.*foo' conftest.s >/dev/null 2>&1 ; then
Packit Service aec53c
                if grep '\.protected.*bar' conftest.s >/dev/null 2>&1; then
Packit Service aec53c
                    gcry_cv_visibility_attribute=yes
Packit Service aec53c
                fi
Packit Service aec53c
            fi
Packit Service aec53c
        fi
Packit Service aec53c
       ])
Packit Service aec53c
if test "$gcry_cv_visibility_attribute" = "yes"; then
Packit Service aec53c
    AC_CACHE_CHECK(for broken visibility attribute,
Packit Service aec53c
       gcry_cv_broken_visibility_attribute,
Packit Service aec53c
       [gcry_cv_broken_visibility_attribute=yes
Packit Service aec53c
        AC_LANG_CONFTEST([AC_LANG_SOURCE(
Packit Service aec53c
          [[int foo (int x);
Packit Service aec53c
            int bar (int x) __asm__ ("foo")
Packit Service aec53c
                            __attribute__ ((visibility ("hidden")));
Packit Service aec53c
            int bar (int x) { return x; }
Packit Service aec53c
          ]])])
Packit Service aec53c
Packit Service aec53c
        if ${CC-cc} -Werror -S conftest.c -o conftest.s \
Packit Service aec53c
                  1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
Packit Service aec53c
           if grep '\.hidden@<:@ 	_@:>@foo' conftest.s >/dev/null 2>&1;
Packit Service aec53c
            then
Packit Service aec53c
               gcry_cv_broken_visibility_attribute=no
Packit Service aec53c
           fi
Packit Service aec53c
        fi
Packit Service aec53c
       ])
Packit Service aec53c
fi
Packit Service aec53c
if test "$gcry_cv_visibility_attribute" = "yes"; then
Packit Service aec53c
    AC_CACHE_CHECK(for broken alias attribute,
Packit Service aec53c
       gcry_cv_broken_alias_attribute,
Packit Service aec53c
       [gcry_cv_broken_alias_attribute=yes
Packit Service aec53c
        AC_LANG_CONFTEST([AC_LANG_SOURCE(
Packit Service aec53c
          [[extern int foo (int x) __asm ("xyzzy");
Packit Service aec53c
            int bar (int x) { return x; }
Packit Service aec53c
            extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
Packit Service aec53c
            extern int dfoo;
Packit Service aec53c
            extern __typeof (dfoo) dfoo __asm ("abccb");
Packit Service aec53c
            int dfoo = 1;
Packit Service aec53c
          ]])])
Packit Service aec53c
Packit Service aec53c
        if ${CC-cc} -Werror -S conftest.c -o conftest.s \
Packit Service aec53c
                  1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
Packit Service aec53c
           if grep 'xyzzy' conftest.s >/dev/null 2>&1 && \
Packit Service aec53c
              grep 'abccb' conftest.s >/dev/null 2>&1; then
Packit Service aec53c
              gcry_cv_broken_alias_attribute=no
Packit Service aec53c
           fi
Packit Service aec53c
        fi
Packit Service aec53c
        ])
Packit Service aec53c
fi
Packit Service aec53c
if test "$gcry_cv_visibility_attribute" = "yes"; then
Packit Service aec53c
    AC_CACHE_CHECK(if gcc supports -fvisibility=hidden,
Packit Service aec53c
       gcry_cv_gcc_has_f_visibility,
Packit Service aec53c
       [gcry_cv_gcc_has_f_visibility=no
Packit Service aec53c
        _gcc_cflags_save=$CFLAGS
Packit Service aec53c
        CFLAGS="-fvisibility=hidden"
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
Packit Service aec53c
                          gcry_cv_gcc_has_f_visibility=yes)
Packit Service aec53c
        CFLAGS=$_gcc_cflags_save;
Packit Service aec53c
       ])
Packit Service aec53c
fi
Packit Service aec53c
if test "$gcry_cv_visibility_attribute" = "yes" \
Packit Service aec53c
   && test "$gcry_cv_broken_visibility_attribute" != "yes" \
Packit Service aec53c
   && test "$gcry_cv_broken_alias_attribute" != "yes" \
Packit Service aec53c
   && test "$gcry_cv_gcc_has_f_visibility" = "yes"
Packit Service aec53c
 then
Packit Service aec53c
   AC_DEFINE(GCRY_USE_VISIBILITY, 1,
Packit Service aec53c
               [Define to use the GNU C visibility attribute.])
Packit Service aec53c
   CFLAGS="$CFLAGS -fvisibility=hidden"
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# Following attribute tests depend on warnings to cause compile to fail,
Packit Service aec53c
# so set -Werror temporarily.
Packit Service aec53c
_gcc_cflags_save=$CFLAGS
Packit Service aec53c
CFLAGS="$CFLAGS -Werror"
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether the compiler supports the GCC style aligned attribute
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether the GCC style aligned attribute is supported],
Packit Service aec53c
       [gcry_cv_gcc_attribute_aligned],
Packit Service aec53c
       [gcry_cv_gcc_attribute_aligned=no
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[struct { int a; } foo __attribute__ ((aligned (16)));]])],
Packit Service aec53c
          [gcry_cv_gcc_attribute_aligned=yes])])
Packit Service aec53c
if test "$gcry_cv_gcc_attribute_aligned" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_ATTRIBUTE_ALIGNED,1,
Packit Service aec53c
     [Defined if a GCC style "__attribute__ ((aligned (n))" is supported])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether the compiler supports the GCC style packed attribute
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether the GCC style packed attribute is supported],
Packit Service aec53c
       [gcry_cv_gcc_attribute_packed],
Packit Service aec53c
       [gcry_cv_gcc_attribute_packed=no
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[struct foolong_s { long b; } __attribute__ ((packed));
Packit Service aec53c
            struct foo_s { char a; struct foolong_s b; }
Packit Service aec53c
              __attribute__ ((packed));
Packit Service aec53c
            enum bar {
Packit Service aec53c
              FOO = 1 / (sizeof(struct foo_s) == (sizeof(char) + sizeof(long))),
Packit Service aec53c
            };]])],
Packit Service aec53c
          [gcry_cv_gcc_attribute_packed=yes])])
Packit Service aec53c
if test "$gcry_cv_gcc_attribute_packed" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_ATTRIBUTE_PACKED,1,
Packit Service aec53c
     [Defined if a GCC style "__attribute__ ((packed))" is supported])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether the compiler supports the GCC style may_alias attribute
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether the GCC style may_alias attribute is supported],
Packit Service aec53c
       [gcry_cv_gcc_attribute_may_alias],
Packit Service aec53c
       [gcry_cv_gcc_attribute_may_alias=no
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[typedef struct foo_s { int a; }
Packit Service aec53c
            __attribute__ ((may_alias)) foo_t;]])],
Packit Service aec53c
          [gcry_cv_gcc_attribute_may_alias=yes])])
Packit Service aec53c
if test "$gcry_cv_gcc_attribute_may_alias" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_ATTRIBUTE_MAY_ALIAS,1,
Packit Service aec53c
     [Defined if a GCC style "__attribute__ ((may_alias))" is supported])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# Restore flags.
Packit Service aec53c
CFLAGS=$_gcc_cflags_save;
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether the compiler supports 'asm' or '__asm__' keyword for
Packit Service aec53c
# assembler blocks.
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether 'asm' assembler keyword is supported],
Packit Service aec53c
       [gcry_cv_have_asm],
Packit Service aec53c
       [gcry_cv_have_asm=no
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[void a(void) { asm("":::"memory"); }]])],
Packit Service aec53c
          [gcry_cv_have_asm=yes])])
Packit Service aec53c
AC_CACHE_CHECK([whether '__asm__' assembler keyword is supported],
Packit Service aec53c
       [gcry_cv_have___asm__],
Packit Service aec53c
       [gcry_cv_have___asm__=no
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[void a(void) { __asm__("":::"memory"); }]])],
Packit Service aec53c
          [gcry_cv_have___asm__=yes])])
Packit Service aec53c
if test "$gcry_cv_have_asm" = "no" ; then
Packit Service aec53c
   if test "$gcry_cv_have___asm__" = "yes" ; then
Packit Service aec53c
      AC_DEFINE(asm,__asm__,
Packit Service aec53c
        [Define to supported assembler block keyword, if plain 'asm' was not
Packit Service aec53c
         supported])
Packit Service aec53c
   fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether the compiler supports inline assembly memory barrier.
Packit Service aec53c
#
Packit Service aec53c
if test "$gcry_cv_have_asm" = "no" ; then
Packit Service aec53c
   if test "$gcry_cv_have___asm__" = "yes" ; then
Packit Service aec53c
      AC_CACHE_CHECK([whether inline assembly memory barrier is supported],
Packit Service aec53c
          [gcry_cv_have_asm_volatile_memory],
Packit Service aec53c
          [gcry_cv_have_asm_volatile_memory=no
Packit Service aec53c
           AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
             [[void a(void) { __asm__ volatile("":::"memory"); }]])],
Packit Service aec53c
             [gcry_cv_have_asm_volatile_memory=yes])])
Packit Service aec53c
   fi
Packit Service aec53c
else
Packit Service aec53c
   AC_CACHE_CHECK([whether inline assembly memory barrier is supported],
Packit Service aec53c
       [gcry_cv_have_asm_volatile_memory],
Packit Service aec53c
       [gcry_cv_have_asm_volatile_memory=no
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[void a(void) { asm volatile("":::"memory"); }]])],
Packit Service aec53c
          [gcry_cv_have_asm_volatile_memory=yes])])
Packit Service aec53c
fi
Packit Service aec53c
if test "$gcry_cv_have_asm_volatile_memory" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_ASM_VOLATILE_MEMORY,1,
Packit Service aec53c
     [Define if inline asm memory barrier is supported])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC assembler supports features needed for our ARM
Packit Service aec53c
# implementations.  This needs to be done before setting up the
Packit Service aec53c
# assembler stuff.
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether GCC assembler is compatible for ARM assembly implementations],
Packit Service aec53c
       [gcry_cv_gcc_arm_platform_as_ok],
Packit Service aec53c
       [gcry_cv_gcc_arm_platform_as_ok=no
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[__asm__(
Packit Service aec53c
                /* Test if assembler supports UAL syntax.  */
Packit Service aec53c
                ".syntax unified\n\t"
Packit Service aec53c
                ".arm\n\t" /* our assembly code is in ARM mode  */
Packit Service aec53c
                /* Following causes error if assembler ignored '.syntax unified'.  */
Packit Service aec53c
                "asmfunc:\n\t"
Packit Service aec53c
                "add %r0, %r0, %r4, ror #12;\n\t"
Packit Service aec53c
Packit Service aec53c
                /* Test if '.type' and '.size' are supported.  */
Packit Service aec53c
                ".size asmfunc,.-asmfunc;\n\t"
Packit Service aec53c
                ".type asmfunc,%function;\n\t"
Packit Service aec53c
            );]])],
Packit Service aec53c
          [gcry_cv_gcc_arm_platform_as_ok=yes])])
Packit Service aec53c
if test "$gcry_cv_gcc_arm_platform_as_ok" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_COMPATIBLE_GCC_ARM_PLATFORM_AS,1,
Packit Service aec53c
     [Defined if underlying assembler is compatible with ARM assembly implementations])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC assembler supports features needed for our ARMv8/Aarch64
Packit Service aec53c
# implementations.  This needs to be done before setting up the
Packit Service aec53c
# assembler stuff.
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether GCC assembler is compatible for ARMv8/Aarch64 assembly implementations],
Packit Service aec53c
       [gcry_cv_gcc_aarch64_platform_as_ok],
Packit Service aec53c
       [gcry_cv_gcc_aarch64_platform_as_ok=no
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[__asm__(
Packit Service aec53c
                "asmfunc:\n\t"
Packit Service aec53c
                "eor x0, x0, x30, ror #12;\n\t"
Packit Service aec53c
                "add x0, x0, x30, asr #12;\n\t"
Packit Service aec53c
                "eor v0.16b, v0.16b, v31.16b;\n\t"
Packit Service aec53c
Packit Service aec53c
                /* Test if '.type' and '.size' are supported.  */
Packit Service aec53c
                ".size asmfunc,.-asmfunc;\n\t"
Packit Service aec53c
                ".type asmfunc,@function;\n\t"
Packit Service aec53c
            );]])],
Packit Service aec53c
          [gcry_cv_gcc_aarch64_platform_as_ok=yes])])
Packit Service aec53c
if test "$gcry_cv_gcc_aarch64_platform_as_ok" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_COMPATIBLE_GCC_AARCH64_PLATFORM_AS,1,
Packit Service aec53c
     [Defined if underlying assembler is compatible with ARMv8/Aarch64 assembly implementations])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether underscores in symbols are required.  This needs to be
Packit Service aec53c
# done before setting up the assembler stuff.
Packit Service aec53c
#
Packit Service aec53c
GNUPG_SYS_SYMBOL_UNDERSCORE()
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#################################
Packit Service aec53c
####                         ####
Packit Service aec53c
#### Setup assembler stuff.  ####
Packit Service aec53c
#### Define mpi_cpu_arch.    ####
Packit Service aec53c
####                         ####
Packit Service aec53c
#################################
Packit Service aec53c
AC_ARG_ENABLE(mpi-path,
Packit Service aec53c
              AC_HELP_STRING([--enable-mpi-path=EXTRA_PATH],
Packit Service aec53c
	      [prepend EXTRA_PATH to list of CPU specific optimizations]),
Packit Service aec53c
	      mpi_extra_path="$enableval",mpi_extra_path="")
Packit Service aec53c
AC_MSG_CHECKING(architecture and mpi assembler functions)
Packit Service aec53c
if test -f $srcdir/mpi/config.links ; then
Packit Service aec53c
    . $srcdir/mpi/config.links
Packit Service aec53c
    AC_CONFIG_LINKS("$mpi_ln_list")
Packit Service aec53c
    ac_cv_mpi_sflags="$mpi_sflags"
Packit Service aec53c
    AC_MSG_RESULT($mpi_cpu_arch)
Packit Service aec53c
else
Packit Service aec53c
    AC_MSG_RESULT(failed)
Packit Service aec53c
    AC_MSG_ERROR([mpi/config.links missing!])
Packit Service aec53c
fi
Packit Service aec53c
MPI_SFLAGS="$ac_cv_mpi_sflags"
Packit Service aec53c
AC_SUBST(MPI_SFLAGS)
Packit Service aec53c
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_ASM_MPIH_ADD1, test "$mpi_mod_asm_mpih_add1" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_ASM_MPIH_SUB1, test "$mpi_mod_asm_mpih_sub1" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL1, test "$mpi_mod_asm_mpih_mul1" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL2, test "$mpi_mod_asm_mpih_mul2" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL3, test "$mpi_mod_asm_mpih_mul3" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_ASM_MPIH_LSHIFT, test "$mpi_mod_asm_mpih_lshift" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_ASM_MPIH_RSHIFT, test "$mpi_mod_asm_mpih_rshift" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_ASM_UDIV, test "$mpi_mod_asm_udiv" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_ASM_UDIV_QRNND, test "$mpi_mod_asm_udiv_qrnnd" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_C_MPIH_ADD1, test "$mpi_mod_c_mpih_add1" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_C_MPIH_SUB1, test "$mpi_mod_c_mpih_sub1" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL1, test "$mpi_mod_c_mpih_mul1" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL2, test "$mpi_mod_c_mpih_mul2" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL3, test "$mpi_mod_c_mpih_mul3" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_C_MPIH_LSHIFT, test "$mpi_mod_c_mpih_lshift" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_C_MPIH_RSHIFT, test "$mpi_mod_c_mpih_rshift" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_C_UDIV, test "$mpi_mod_c_udiv" = yes)
Packit Service aec53c
AM_CONDITIONAL(MPI_MOD_C_UDIV_QRNND, test "$mpi_mod_c_udiv_qrnnd" = yes)
Packit Service aec53c
Packit Service aec53c
# Reset non applicable feature flags.
Packit Service aec53c
if test "$mpi_cpu_arch" != "x86" ; then
Packit Service aec53c
   aesnisupport="n/a"
Packit Service aec53c
   pclmulsupport="n/a"
Packit Service aec53c
   sse41support="n/a"
Packit Service aec53c
   avxsupport="n/a"
Packit Service aec53c
   avx2support="n/a"
Packit Service aec53c
   padlocksupport="n/a"
Packit Service aec53c
   jentsupport="n/a"
Packit Service aec53c
   drngsupport="n/a"
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
if test "$mpi_cpu_arch" != "arm" ; then
Packit Service aec53c
   if test "$mpi_cpu_arch" != "aarch64" ; then
Packit Service aec53c
     neonsupport="n/a"
Packit Service aec53c
     armcryptosupport="n/a"
Packit Service aec53c
   fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#############################################
Packit Service aec53c
####                                     ####
Packit Service aec53c
#### Platform specific compiler checks.  ####
Packit Service aec53c
####                                     ####
Packit Service aec53c
#############################################
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# Following tests depend on warnings to cause compile to fail, so set -Werror
Packit Service aec53c
# temporarily.
Packit Service aec53c
_gcc_cflags_save=$CFLAGS
Packit Service aec53c
CFLAGS="$CFLAGS -Werror"
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether compiler supports 'ms_abi' function attribute.
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether compiler supports 'ms_abi' function attribute],
Packit Service aec53c
       [gcry_cv_gcc_attribute_ms_abi],
Packit Service aec53c
       [gcry_cv_gcc_attribute_ms_abi=no
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[int __attribute__ ((ms_abi)) proto(int);]])],
Packit Service aec53c
          [gcry_cv_gcc_attribute_ms_abi=yes])])
Packit Service aec53c
if test "$gcry_cv_gcc_attribute_ms_abi" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_ATTRIBUTE_MS_ABI,1,
Packit Service aec53c
     [Defined if compiler supports "__attribute__ ((ms_abi))" function attribute])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether compiler supports 'sysv_abi' function attribute.
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether compiler supports 'sysv_abi' function attribute],
Packit Service aec53c
       [gcry_cv_gcc_attribute_sysv_abi],
Packit Service aec53c
       [gcry_cv_gcc_attribute_sysv_abi=no
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[int __attribute__ ((sysv_abi)) proto(int);]])],
Packit Service aec53c
          [gcry_cv_gcc_attribute_sysv_abi=yes])])
Packit Service aec53c
if test "$gcry_cv_gcc_attribute_sysv_abi" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_ATTRIBUTE_SYSV_ABI,1,
Packit Service aec53c
     [Defined if compiler supports "__attribute__ ((sysv_abi))" function attribute])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether default calling convention is 'ms_abi'.
Packit Service aec53c
#
Packit Service aec53c
if test "$gcry_cv_gcc_attribute_ms_abi" = "yes" ; then
Packit Service aec53c
   AC_CACHE_CHECK([whether default calling convention is 'ms_abi'],
Packit Service aec53c
          [gcry_cv_gcc_default_abi_is_ms_abi],
Packit Service aec53c
          [gcry_cv_gcc_default_abi_is_ms_abi=no
Packit Service aec53c
           AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
             [[void *test(void) {
Packit Service aec53c
                 void *(*def_func)(void) = test;
Packit Service aec53c
                 void *__attribute__((ms_abi))(*msabi_func)(void);
Packit Service aec53c
                 /* warning on SysV abi targets, passes on Windows based targets */
Packit Service aec53c
                 msabi_func = def_func;
Packit Service aec53c
                 return msabi_func;
Packit Service aec53c
             }]])],
Packit Service aec53c
             [gcry_cv_gcc_default_abi_is_ms_abi=yes])])
Packit Service aec53c
   if test "$gcry_cv_gcc_default_abi_is_ms_abi" = "yes" ; then
Packit Service aec53c
      AC_DEFINE(HAVE_GCC_DEFAULT_ABI_IS_MS_ABI,1,
Packit Service aec53c
        [Defined if default calling convention is 'ms_abi'])
Packit Service aec53c
   fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether default calling convention is 'sysv_abi'.
Packit Service aec53c
#
Packit Service aec53c
if test "$gcry_cv_gcc_attribute_sysv_abi" = "yes" ; then
Packit Service aec53c
   AC_CACHE_CHECK([whether default calling convention is 'sysv_abi'],
Packit Service aec53c
          [gcry_cv_gcc_default_abi_is_sysv_abi],
Packit Service aec53c
          [gcry_cv_gcc_default_abi_is_sysv_abi=no
Packit Service aec53c
           AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
             [[void *test(void) {
Packit Service aec53c
                 void *(*def_func)(void) = test;
Packit Service aec53c
                 void *__attribute__((sysv_abi))(*sysvabi_func)(void);
Packit Service aec53c
                 /* warning on MS ABI targets, passes on SysV ABI targets */
Packit Service aec53c
                 sysvabi_func = def_func;
Packit Service aec53c
                 return sysvabi_func;
Packit Service aec53c
             }]])],
Packit Service aec53c
             [gcry_cv_gcc_default_abi_is_sysv_abi=yes])])
Packit Service aec53c
   if test "$gcry_cv_gcc_default_abi_is_sysv_abi" = "yes" ; then
Packit Service aec53c
      AC_DEFINE(HAVE_GCC_DEFAULT_ABI_IS_SYSV_ABI,1,
Packit Service aec53c
        [Defined if default calling convention is 'sysv_abi'])
Packit Service aec53c
   fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# Restore flags.
Packit Service aec53c
CFLAGS=$_gcc_cflags_save;
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC inline assembler supports SSSE3 instructions
Packit Service aec53c
# This is required for the AES-NI instructions.
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether GCC inline assembler supports SSSE3 instructions],
Packit Service aec53c
       [gcry_cv_gcc_inline_asm_ssse3],
Packit Service aec53c
       [if test "$mpi_cpu_arch" != "x86" ; then
Packit Service aec53c
          gcry_cv_gcc_inline_asm_ssse3="n/a"
Packit Service aec53c
        else
Packit Service aec53c
          gcry_cv_gcc_inline_asm_ssse3=no
Packit Service aec53c
          AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[static unsigned char be_mask[16] __attribute__ ((aligned (16))) =
Packit Service aec53c
              { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
Packit Service aec53c
            void a(void) {
Packit Service aec53c
              __asm__("pshufb %[mask], %%xmm2\n\t"::[mask]"m"(*be_mask):);
Packit Service aec53c
            }]])],
Packit Service aec53c
          [gcry_cv_gcc_inline_asm_ssse3=yes])
Packit Service aec53c
        fi])
Packit Service aec53c
if test "$gcry_cv_gcc_inline_asm_ssse3" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_INLINE_ASM_SSSE3,1,
Packit Service aec53c
     [Defined if inline assembler supports SSSE3 instructions])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC inline assembler supports PCLMUL instructions.
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether GCC inline assembler supports PCLMUL instructions],
Packit Service aec53c
       [gcry_cv_gcc_inline_asm_pclmul],
Packit Service aec53c
       [if test "$mpi_cpu_arch" != "x86" ; then
Packit Service aec53c
          gcry_cv_gcc_inline_asm_pclmul="n/a"
Packit Service aec53c
        else
Packit Service aec53c
          gcry_cv_gcc_inline_asm_pclmul=no
Packit Service aec53c
          AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[void a(void) {
Packit Service aec53c
              __asm__("pclmulqdq \$0, %%xmm1, %%xmm3\n\t":::"cc");
Packit Service aec53c
            }]])],
Packit Service aec53c
          [gcry_cv_gcc_inline_asm_pclmul=yes])
Packit Service aec53c
        fi])
Packit Service aec53c
if test "$gcry_cv_gcc_inline_asm_pclmul" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_INLINE_ASM_PCLMUL,1,
Packit Service aec53c
     [Defined if inline assembler supports PCLMUL instructions])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC inline assembler supports SSE4.1 instructions.
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether GCC inline assembler supports SSE4.1 instructions],
Packit Service aec53c
       [gcry_cv_gcc_inline_asm_sse41],
Packit Service aec53c
       [if test "$mpi_cpu_arch" != "x86" ; then
Packit Service aec53c
          gcry_cv_gcc_inline_asm_sse41="n/a"
Packit Service aec53c
        else
Packit Service aec53c
          gcry_cv_gcc_inline_asm_sse41=no
Packit Service aec53c
          AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[void a(void) {
Packit Service aec53c
              int i;
Packit Service aec53c
              __asm__("pextrd \$2, %%xmm0, %[out]\n\t" : [out] "=m" (i));
Packit Service aec53c
            }]])],
Packit Service aec53c
          [gcry_cv_gcc_inline_asm_sse41=yes])
Packit Service aec53c
        fi])
Packit Service aec53c
if test "$gcry_cv_gcc_inline_asm_sse41" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_INLINE_ASM_SSE41,1,
Packit Service aec53c
     [Defined if inline assembler supports SSE4.1 instructions])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC inline assembler supports AVX instructions
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether GCC inline assembler supports AVX instructions],
Packit Service aec53c
       [gcry_cv_gcc_inline_asm_avx],
Packit Service aec53c
       [if test "$mpi_cpu_arch" != "x86" ; then
Packit Service aec53c
          gcry_cv_gcc_inline_asm_avx="n/a"
Packit Service aec53c
        else
Packit Service aec53c
          gcry_cv_gcc_inline_asm_avx=no
Packit Service aec53c
          AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[void a(void) {
Packit Service aec53c
              __asm__("xgetbv; vaesdeclast (%[mem]),%%xmm0,%%xmm7\n\t"::[mem]"r"(0):);
Packit Service aec53c
            }]])],
Packit Service aec53c
          [gcry_cv_gcc_inline_asm_avx=yes])
Packit Service aec53c
        fi])
Packit Service aec53c
if test "$gcry_cv_gcc_inline_asm_avx" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_INLINE_ASM_AVX,1,
Packit Service aec53c
     [Defined if inline assembler supports AVX instructions])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC inline assembler supports AVX2 instructions
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether GCC inline assembler supports AVX2 instructions],
Packit Service aec53c
       [gcry_cv_gcc_inline_asm_avx2],
Packit Service aec53c
       [if test "$mpi_cpu_arch" != "x86" ; then
Packit Service aec53c
          gcry_cv_gcc_inline_asm_avx2="n/a"
Packit Service aec53c
        else
Packit Service aec53c
          gcry_cv_gcc_inline_asm_avx2=no
Packit Service aec53c
          AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[void a(void) {
Packit Service aec53c
              __asm__("xgetbv; vpbroadcastb %%xmm7,%%ymm1\n\t":::"cc");
Packit Service aec53c
            }]])],
Packit Service aec53c
          [gcry_cv_gcc_inline_asm_avx2=yes])
Packit Service aec53c
        fi])
Packit Service aec53c
if test "$gcry_cv_gcc_inline_asm_avx2" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_INLINE_ASM_AVX2,1,
Packit Service aec53c
     [Defined if inline assembler supports AVX2 instructions])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC inline assembler supports BMI2 instructions
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether GCC inline assembler supports BMI2 instructions],
Packit Service aec53c
       [gcry_cv_gcc_inline_asm_bmi2],
Packit Service aec53c
       [if test "$mpi_cpu_arch" != "x86" ; then
Packit Service aec53c
          gcry_cv_gcc_inline_asm_bmi2="n/a"
Packit Service aec53c
        else
Packit Service aec53c
          gcry_cv_gcc_inline_asm_bmi2=no
Packit Service aec53c
          AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[unsigned int a(unsigned int x, unsigned int y) {
Packit Service aec53c
              unsigned int tmp1, tmp2;
Packit Service aec53c
              asm ("rorxl %2, %1, %0"
Packit Service aec53c
                   : "=r" (tmp1)
Packit Service aec53c
                   : "rm0" (x), "J" (32 - ((23) & 31)));
Packit Service aec53c
              asm ("andnl %2, %1, %0"
Packit Service aec53c
                   : "=r" (tmp2)
Packit Service aec53c
                   : "r0" (x), "rm" (y));
Packit Service aec53c
              return tmp1 + tmp2;
Packit Service aec53c
            }]])],
Packit Service aec53c
          [gcry_cv_gcc_inline_asm_bmi2=yes])
Packit Service aec53c
        fi])
Packit Service aec53c
if test "$gcry_cv_gcc_inline_asm_bmi2" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_INLINE_ASM_BMI2,1,
Packit Service aec53c
     [Defined if inline assembler supports BMI2 instructions])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC assembler needs "-Wa,--divide" to correctly handle
Packit Service aec53c
# constant division
Packit Service aec53c
#
Packit Service aec53c
if test $amd64_as_feature_detection = yes; then
Packit Service aec53c
  AC_CACHE_CHECK([whether GCC assembler handles division correctly],
Packit Service aec53c
       [gcry_cv_gcc_as_const_division_ok],
Packit Service aec53c
       [gcry_cv_gcc_as_const_division_ok=no
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[__asm__("xorl \$(123456789/12345678), %ebp;\n\t");]])],
Packit Service aec53c
          [gcry_cv_gcc_as_const_division_ok=yes])])
Packit Service aec53c
  if test "$gcry_cv_gcc_as_const_division_ok" = "no" ; then
Packit Service aec53c
    #
Packit Service aec53c
    # Add '-Wa,--divide' to CPPFLAGS and try check again.
Packit Service aec53c
    #
Packit Service aec53c
    _gcc_cppflags_save="$CPPFLAGS"
Packit Service aec53c
    CPPFLAGS="$CPPFLAGS -Wa,--divide"
Packit Service aec53c
    AC_CACHE_CHECK([whether GCC assembler handles division correctly with "-Wa,--divide"],
Packit Service aec53c
         [gcry_cv_gcc_as_const_division_with_wadivide_ok],
Packit Service aec53c
         [gcry_cv_gcc_as_const_division_with_wadivide_ok=no
Packit Service aec53c
          AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
            [[__asm__("xorl \$(123456789/12345678), %ebp;\n\t");]])],
Packit Service aec53c
            [gcry_cv_gcc_as_const_division_with_wadivide_ok=yes])])
Packit Service aec53c
    if test "$gcry_cv_gcc_as_const_division_with_wadivide_ok" = "no" ; then
Packit Service aec53c
      # '-Wa,--divide' did not work, restore old flags.
Packit Service aec53c
      CPPFLAGS="$_gcc_cppflags_save"
Packit Service aec53c
    fi
Packit Service aec53c
  fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC assembler supports features needed for our amd64
Packit Service aec53c
# implementations
Packit Service aec53c
#
Packit Service aec53c
if test $amd64_as_feature_detection = yes; then
Packit Service aec53c
  AC_CACHE_CHECK([whether GCC assembler is compatible for amd64 assembly implementations],
Packit Service aec53c
       [gcry_cv_gcc_amd64_platform_as_ok],
Packit Service aec53c
       [if test "$mpi_cpu_arch" != "x86" ; then
Packit Service aec53c
          gcry_cv_gcc_amd64_platform_as_ok="n/a"
Packit Service aec53c
        else
Packit Service aec53c
          gcry_cv_gcc_amd64_platform_as_ok=no
Packit Service aec53c
          AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[__asm__(
Packit Service aec53c
                /* Test if '.type' and '.size' are supported.  */
Packit Service aec53c
                /* These work only on ELF targets. */
Packit Service aec53c
		"asmfunc:\n\t"
Packit Service aec53c
                ".size asmfunc,.-asmfunc;\n\t"
Packit Service aec53c
                ".type asmfunc,@function;\n\t"
Packit Service aec53c
		/* Test if assembler allows use of '/' for constant division
Packit Service aec53c
		 * (Solaris/x86 issue). If previous constant division check
Packit Service aec53c
		 * and "-Wa,--divide" workaround failed, this causes assembly
Packit Service aec53c
		 * to be disable on this machine. */
Packit Service aec53c
		"xorl \$(123456789/12345678), %ebp;\n\t"
Packit Service aec53c
            );]])],
Packit Service aec53c
          [gcry_cv_gcc_amd64_platform_as_ok=yes])
Packit Service aec53c
        fi])
Packit Service aec53c
  if test "$gcry_cv_gcc_amd64_platform_as_ok" = "yes" ; then
Packit Service aec53c
     AC_DEFINE(HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS,1,
Packit Service aec53c
              [Defined if underlying assembler is compatible with amd64 assembly implementations])
Packit Service aec53c
  fi
Packit Service aec53c
  if test "$gcry_cv_gcc_amd64_platform_as_ok" = "no" &&
Packit Service aec53c
     test "$gcry_cv_gcc_attribute_sysv_abi" = "yes" &&
Packit Service aec53c
     test "$gcry_cv_gcc_default_abi_is_ms_abi" = "yes"; then
Packit Service aec53c
    AC_CACHE_CHECK([whether GCC assembler is compatible for WIN64 assembly implementations],
Packit Service aec53c
      [gcry_cv_gcc_win64_platform_as_ok],
Packit Service aec53c
      [gcry_cv_gcc_win64_platform_as_ok=no
Packit Service aec53c
      AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
        [[__asm__(
Packit Service aec53c
              ".globl asmfunc\n\t"
Packit Service aec53c
              "asmfunc:\n\t"
Packit Service aec53c
              "xorq \$(1234), %rbp;\n\t"
Packit Service aec53c
          );]])],
Packit Service aec53c
        [gcry_cv_gcc_win64_platform_as_ok=yes])])
Packit Service aec53c
    if test "$gcry_cv_gcc_win64_platform_as_ok" = "yes" ; then
Packit Service aec53c
      AC_DEFINE(HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS,1,
Packit Service aec53c
                [Defined if underlying assembler is compatible with WIN64 assembly implementations])
Packit Service aec53c
    fi
Packit Service aec53c
  fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC assembler supports features needed for assembly
Packit Service aec53c
# implementations that use Intel syntax
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether GCC assembler is compatible for Intel syntax assembly implementations],
Packit Service aec53c
       [gcry_cv_gcc_platform_as_ok_for_intel_syntax],
Packit Service aec53c
       [if test "$mpi_cpu_arch" != "x86" ; then
Packit Service aec53c
          gcry_cv_gcc_platform_as_ok_for_intel_syntax="n/a"
Packit Service aec53c
        else
Packit Service aec53c
          gcry_cv_gcc_platform_as_ok_for_intel_syntax=no
Packit Service aec53c
          AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[__asm__(
Packit Service aec53c
                ".intel_syntax noprefix\n\t"
Packit Service aec53c
                "pxor xmm1, xmm7;\n\t"
Packit Service aec53c
                /* Intel syntax implementation also use GAS macros, so check
Packit Service aec53c
                 * for them here. */
Packit Service aec53c
                "VAL_A = xmm4\n\t"
Packit Service aec53c
                "VAL_B = xmm2\n\t"
Packit Service aec53c
                ".macro SET_VAL_A p1\n\t"
Packit Service aec53c
                "  VAL_A = \\\\p1 \n\t"
Packit Service aec53c
                ".endm\n\t"
Packit Service aec53c
                ".macro SET_VAL_B p1\n\t"
Packit Service aec53c
                "  VAL_B = \\\\p1 \n\t"
Packit Service aec53c
                ".endm\n\t"
Packit Service aec53c
                "vmovdqa VAL_A, VAL_B;\n\t"
Packit Service aec53c
                "SET_VAL_A eax\n\t"
Packit Service aec53c
                "SET_VAL_B ebp\n\t"
Packit Service aec53c
                "add VAL_A, VAL_B;\n\t"
Packit Service aec53c
                "add VAL_B, 0b10101;\n\t"
Packit Service aec53c
            );]])],
Packit Service aec53c
          [gcry_cv_gcc_platform_as_ok_for_intel_syntax=yes])
Packit Service aec53c
        fi])
Packit Service aec53c
if test "$gcry_cv_gcc_platform_as_ok_for_intel_syntax" = "yes" ; then
Packit Service aec53c
  AC_DEFINE(HAVE_INTEL_SYNTAX_PLATFORM_AS,1,
Packit Service aec53c
            [Defined if underlying assembler is compatible with Intel syntax assembly implementations])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether compiler is configured for ARMv6 or newer architecture
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether compiler is configured for ARMv6 or newer architecture],
Packit Service aec53c
       [gcry_cv_cc_arm_arch_is_v6],
Packit Service aec53c
       [if test "$mpi_cpu_arch" != "arm" ; then
Packit Service aec53c
          gcry_cv_cc_arm_arch_is_v6="n/a"
Packit Service aec53c
        else
Packit Service aec53c
          gcry_cv_cc_arm_arch_is_v6=no
Packit Service aec53c
          AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[
Packit Service aec53c
           #if defined(__arm__) && \
Packit Service aec53c
             ((defined(__ARM_ARCH) && __ARM_ARCH >= 6) \
Packit Service aec53c
             || defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \
Packit Service aec53c
             || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) \
Packit Service aec53c
             || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) \
Packit Service aec53c
             || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
Packit Service aec53c
             || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \
Packit Service aec53c
             || defined(__ARM_ARCH_7EM__))
Packit Service aec53c
             /* empty */
Packit Service aec53c
           #else
Packit Service aec53c
             /* fail compile if not ARMv6. */
Packit Service aec53c
             not_armv6 not_armv6 = (not_armv6)not_armv6;
Packit Service aec53c
           #endif
Packit Service aec53c
          ]])],
Packit Service aec53c
          [gcry_cv_cc_arm_arch_is_v6=yes])
Packit Service aec53c
        fi])
Packit Service aec53c
if test "$gcry_cv_cc_arm_arch_is_v6" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_ARM_ARCH_V6,1,
Packit Service aec53c
     [Defined if ARM architecture is v6 or newer])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC inline assembler supports NEON instructions
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether GCC inline assembler supports NEON instructions],
Packit Service aec53c
       [gcry_cv_gcc_inline_asm_neon],
Packit Service aec53c
       [if test "$mpi_cpu_arch" != "arm" ; then
Packit Service aec53c
          gcry_cv_gcc_inline_asm_neon="n/a"
Packit Service aec53c
        else
Packit Service aec53c
          gcry_cv_gcc_inline_asm_neon=no
Packit Service aec53c
          AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[__asm__(
Packit Service aec53c
                ".syntax unified\n\t"
Packit Service aec53c
                ".arm\n\t"
Packit Service aec53c
                ".fpu neon\n\t"
Packit Service aec53c
                "vld1.64 {%q0-%q1}, [%r0]!;\n\t"
Packit Service aec53c
                "vrev64.8 %q0, %q3;\n\t"
Packit Service aec53c
                "vadd.u64 %q0, %q1;\n\t"
Packit Service aec53c
                "vadd.s64 %d3, %d2, %d3;\n\t"
Packit Service aec53c
                );
Packit Service aec53c
            ]])],
Packit Service aec53c
          [gcry_cv_gcc_inline_asm_neon=yes])
Packit Service aec53c
        fi])
Packit Service aec53c
if test "$gcry_cv_gcc_inline_asm_neon" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_INLINE_ASM_NEON,1,
Packit Service aec53c
     [Defined if inline assembler supports NEON instructions])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC inline assembler supports AArch32 Crypto Extension instructions
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether GCC inline assembler supports AArch32 Crypto Extension instructions],
Packit Service aec53c
       [gcry_cv_gcc_inline_asm_aarch32_crypto],
Packit Service aec53c
       [if test "$mpi_cpu_arch" != "arm" ; then
Packit Service aec53c
          gcry_cv_gcc_inline_asm_aarch32_crypto="n/a"
Packit Service aec53c
        else
Packit Service aec53c
          gcry_cv_gcc_inline_asm_aarch32_crypto=no
Packit Service aec53c
          AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[__asm__(
Packit Service aec53c
                ".syntax unified\n\t"
Packit Service aec53c
                ".arch armv8-a\n\t"
Packit Service aec53c
                ".arm\n\t"
Packit Service aec53c
                ".fpu crypto-neon-fp-armv8\n\t"
Packit Service aec53c
Packit Service aec53c
                "sha1h.32 q0, q0;\n\t"
Packit Service aec53c
                "sha1c.32 q0, q0, q0;\n\t"
Packit Service aec53c
                "sha1p.32 q0, q0, q0;\n\t"
Packit Service aec53c
                "sha1su0.32 q0, q0, q0;\n\t"
Packit Service aec53c
                "sha1su1.32 q0, q0;\n\t"
Packit Service aec53c
Packit Service aec53c
                "sha256h.32 q0, q0, q0;\n\t"
Packit Service aec53c
                "sha256h2.32 q0, q0, q0;\n\t"
Packit Service aec53c
                "sha1p.32 q0, q0, q0;\n\t"
Packit Service aec53c
                "sha256su0.32 q0, q0;\n\t"
Packit Service aec53c
                "sha256su1.32 q0, q0, q15;\n\t"
Packit Service aec53c
Packit Service aec53c
                "aese.8 q0, q0;\n\t"
Packit Service aec53c
                "aesd.8 q0, q0;\n\t"
Packit Service aec53c
                "aesmc.8 q0, q0;\n\t"
Packit Service aec53c
                "aesimc.8 q0, q0;\n\t"
Packit Service aec53c
Packit Service aec53c
                "vmull.p64 q0, d0, d0;\n\t"
Packit Service aec53c
                );
Packit Service aec53c
            ]])],
Packit Service aec53c
          [gcry_cv_gcc_inline_asm_aarch32_crypto=yes])
Packit Service aec53c
        fi])
Packit Service aec53c
if test "$gcry_cv_gcc_inline_asm_aarch32_crypto" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_INLINE_ASM_AARCH32_CRYPTO,1,
Packit Service aec53c
     [Defined if inline assembler supports AArch32 Crypto Extension instructions])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC inline assembler supports AArch64 NEON instructions
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether GCC inline assembler supports AArch64 NEON instructions],
Packit Service aec53c
       [gcry_cv_gcc_inline_asm_aarch64_neon],
Packit Service aec53c
       [if test "$mpi_cpu_arch" != "aarch64" ; then
Packit Service aec53c
          gcry_cv_gcc_inline_asm_aarch64_neon="n/a"
Packit Service aec53c
        else
Packit Service aec53c
          gcry_cv_gcc_inline_asm_aarch64_neon=no
Packit Service aec53c
          AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[__asm__(
Packit Service aec53c
                ".cpu generic+simd\n\t"
Packit Service aec53c
                "mov w0, \#42;\n\t"
Packit Service aec53c
                "dup v0.8b, w0;\n\t"
Packit Service aec53c
                "ld4 {v0.8b,v1.8b,v2.8b,v3.8b},[x0],\#32;\n\t"
Packit Service aec53c
                );
Packit Service aec53c
            ]])],
Packit Service aec53c
          [gcry_cv_gcc_inline_asm_aarch64_neon=yes])
Packit Service aec53c
        fi])
Packit Service aec53c
if test "$gcry_cv_gcc_inline_asm_aarch64_neon" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_INLINE_ASM_AARCH64_NEON,1,
Packit Service aec53c
     [Defined if inline assembler supports AArch64 NEON instructions])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether GCC inline assembler supports AArch64 Crypto Extension instructions
Packit Service aec53c
#
Packit Service aec53c
AC_CACHE_CHECK([whether GCC inline assembler supports AArch64 Crypto Extension instructions],
Packit Service aec53c
       [gcry_cv_gcc_inline_asm_aarch64_crypto],
Packit Service aec53c
       [if test "$mpi_cpu_arch" != "aarch64" ; then
Packit Service aec53c
          gcry_cv_gcc_inline_asm_aarch64_crypto="n/a"
Packit Service aec53c
        else
Packit Service aec53c
          gcry_cv_gcc_inline_asm_aarch64_crypto=no
Packit Service aec53c
          AC_COMPILE_IFELSE([AC_LANG_SOURCE(
Packit Service aec53c
          [[__asm__(
Packit Service aec53c
                ".cpu generic+simd+crypto\n\t"
Packit Service aec53c
Packit Service aec53c
                "mov w0, \#42;\n\t"
Packit Service aec53c
                "dup v0.8b, w0;\n\t"
Packit Service aec53c
                "ld4 {v0.8b,v1.8b,v2.8b,v3.8b},[x0],\#32;\n\t"
Packit Service aec53c
Packit Service aec53c
                "sha1h s0, s0;\n\t"
Packit Service aec53c
                "sha1c q0, s0, v0.4s;\n\t"
Packit Service aec53c
                "sha1p q0, s0, v0.4s;\n\t"
Packit Service aec53c
                "sha1su0 v0.4s, v0.4s, v0.4s;\n\t"
Packit Service aec53c
                "sha1su1 v0.4s, v0.4s;\n\t"
Packit Service aec53c
Packit Service aec53c
                "sha256h q0, q0, v0.4s;\n\t"
Packit Service aec53c
                "sha256h2 q0, q0, v0.4s;\n\t"
Packit Service aec53c
                "sha1p q0, s0, v0.4s;\n\t"
Packit Service aec53c
                "sha256su0 v0.4s, v0.4s;\n\t"
Packit Service aec53c
                "sha256su1 v0.4s, v0.4s, v31.4s;\n\t"
Packit Service aec53c
Packit Service aec53c
                "aese v0.16b, v0.16b;\n\t"
Packit Service aec53c
                "aesd v0.16b, v0.16b;\n\t"
Packit Service aec53c
                "aesmc v0.16b, v0.16b;\n\t"
Packit Service aec53c
                "aesimc v0.16b, v0.16b;\n\t"
Packit Service aec53c
Packit Service aec53c
                "pmull v0.1q, v0.1d, v31.1d;\n\t"
Packit Service aec53c
                "pmull2 v0.1q, v0.2d, v31.2d;\n\t"
Packit Service aec53c
                );
Packit Service aec53c
            ]])],
Packit Service aec53c
          [gcry_cv_gcc_inline_asm_aarch64_crypto=yes])
Packit Service aec53c
        fi])
Packit Service aec53c
if test "$gcry_cv_gcc_inline_asm_aarch64_crypto" = "yes" ; then
Packit Service aec53c
   AC_DEFINE(HAVE_GCC_INLINE_ASM_AARCH64_CRYPTO,1,
Packit Service aec53c
     [Defined if inline assembler supports AArch64 Crypto Extension instructions])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#######################################
Packit Service aec53c
#### Checks for library functions. ####
Packit Service aec53c
#######################################
Packit Service aec53c
Packit Service aec53c
AC_FUNC_VPRINTF
Packit Service aec53c
# We have replacements for these in src/missing-string.c
Packit Service aec53c
AC_CHECK_FUNCS(stpcpy strcasecmp)
Packit Service aec53c
# We have replacements for these in src/g10lib.h
Packit Service aec53c
AC_CHECK_FUNCS(strtoul memmove stricmp atexit raise)
Packit Service aec53c
# Other checks
Packit Service aec53c
AC_CHECK_FUNCS(strerror rand mmap getpagesize sysconf waitpid wait4)
Packit Service aec53c
AC_CHECK_FUNCS(gettimeofday getrusage gethrtime clock_gettime syslog)
Packit Service aec53c
AC_CHECK_FUNCS(syscall fcntl ftruncate flockfile)
Packit Service aec53c
Packit Service aec53c
GNUPG_CHECK_MLOCK
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Replacement functions.
Packit Service aec53c
#
Packit Service aec53c
AC_REPLACE_FUNCS([getpid clock])
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether it is necessary to link against libdl.
Packit Service aec53c
#
Packit Service aec53c
DL_LIBS=""
Packit Service aec53c
if test "$use_hmac_binary_check" = yes ; then
Packit Service aec53c
  _gcry_save_libs="$LIBS"
Packit Service aec53c
  LIBS=""
Packit Service aec53c
  AC_SEARCH_LIBS(dlopen, c dl,,,)
Packit Service aec53c
  DL_LIBS=$LIBS
Packit Service aec53c
  LIBS="$_gcry_save_libs"
Packit Service aec53c
  LIBGCRYPT_CONFIG_LIBS="${LIBGCRYPT_CONFIG_LIBS} ${DL_LIBS}"
Packit Service aec53c
fi
Packit Service aec53c
AC_SUBST(DL_LIBS)
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Check whether we can use Linux capabilities as requested.
Packit Service aec53c
#
Packit Service aec53c
if test "$use_capabilities" = "yes" ; then
Packit Service aec53c
use_capabilities=no
Packit Service aec53c
AC_CHECK_HEADERS(sys/capability.h)
Packit Service aec53c
if test "$ac_cv_header_sys_capability_h" = "yes" ; then
Packit Service aec53c
  AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
Packit Service aec53c
  if test "$ac_cv_lib_cap_cap_init" = "yes"; then
Packit Service aec53c
     AC_DEFINE(USE_CAPABILITIES,1,
Packit Service aec53c
               [define if capabilities should be used])
Packit Service aec53c
     LIBS="$LIBS -lcap"
Packit Service aec53c
     use_capabilities=yes
Packit Service aec53c
  fi
Packit Service aec53c
fi
Packit Service aec53c
if test "$use_capabilities" = "no" ; then
Packit Service aec53c
    AC_MSG_WARN([[
Packit Service aec53c
***
Packit Service aec53c
*** The use of capabilities on this system is not possible.
Packit Service aec53c
*** You need a recent Linux kernel and some patches:
Packit Service aec53c
***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
Packit Service aec53c
***   fcap-module-990613.tar.gz     (kernel module)
Packit Service aec53c
***   libcap-1.92.tar.gz            (user mode library and utilities)
Packit Service aec53c
*** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
Packit Service aec53c
*** set (filesystems menu). Be warned: This code is *really* ALPHA.
Packit Service aec53c
***]])
Packit Service aec53c
fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
# Check whether a random device is available.
Packit Service aec53c
if test "$try_dev_random" = yes ; then
Packit Service aec53c
    AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
Packit Service aec53c
    [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
Packit Service aec53c
      ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
Packit Service aec53c
    if test "$ac_cv_have_dev_random" = yes; then
Packit Service aec53c
        AC_DEFINE(HAVE_DEV_RANDOM,1,
Packit Service aec53c
                 [defined if the system supports a random device] )
Packit Service aec53c
    fi
Packit Service aec53c
else
Packit Service aec53c
    AC_MSG_CHECKING(for random device)
Packit Service aec53c
    ac_cv_have_dev_random=no
Packit Service aec53c
    AC_MSG_RESULT(has been disabled)
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
# Figure out the random modules for this configuration.
Packit Service aec53c
if test "$random" = "default"; then
Packit Service aec53c
Packit Service aec53c
    # Select default value.
Packit Service aec53c
    if test "$ac_cv_have_dev_random" = yes; then
Packit Service aec53c
        # Try Linuxish random device.
Packit Service aec53c
        random_modules="linux"
Packit Service aec53c
    else
Packit Service aec53c
        case "${host}" in
Packit Service aec53c
        *-*-mingw32ce*)
Packit Service aec53c
          # WindowsCE random device.
Packit Service aec53c
          random_modules="w32ce"
Packit Service aec53c
          ;;
Packit Service aec53c
        *-*-mingw32*|*-*-cygwin*)
Packit Service aec53c
          # Windows random device.
Packit Service aec53c
          random_modules="w32"
Packit Service aec53c
          ;;
Packit Service aec53c
        *)
Packit Service aec53c
          # Build everything, allow to select at runtime.
Packit Service aec53c
          random_modules="$auto_random_modules"
Packit Service aec53c
          ;;
Packit Service aec53c
        esac
Packit Service aec53c
    fi
Packit Service aec53c
else
Packit Service aec53c
    if test "$random" = "auto"; then
Packit Service aec53c
        # Build everything, allow to select at runtime.
Packit Service aec53c
        random_modules="$auto_random_modules"
Packit Service aec53c
    else
Packit Service aec53c
        random_modules="$random"
Packit Service aec53c
    fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Other defines
Packit Service aec53c
#
Packit Service aec53c
if test mym4_isgit = "yes"; then
Packit Service aec53c
    AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
Packit Service aec53c
              [Defined if this is not a regular release])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# This is handy for debugging so the compiler doesn't rearrange
Packit Service aec53c
# things and eliminate variables.
Packit Service aec53c
AC_ARG_ENABLE(optimization,
Packit Service aec53c
       AC_HELP_STRING([--disable-optimization],
Packit Service aec53c
		      [disable compiler optimization]),
Packit Service aec53c
                      [if test $enableval = no ; then
Packit Service aec53c
                         CFLAGS=`echo $CFLAGS | sed 's/-O[[0-9]]//'`
Packit Service aec53c
                       fi])
Packit Service aec53c
Packit Service aec53c
AC_MSG_NOTICE([checking for cc features])
Packit Service aec53c
# CFLAGS mangling when using gcc.
Packit Service aec53c
if test "$GCC" = yes; then
Packit Service aec53c
    AC_MSG_CHECKING([if gcc supports -fno-delete-null-pointer-checks])
Packit Service aec53c
    _gcc_cflags_save=$CFLAGS
Packit Service aec53c
    CFLAGS="-fno-delete-null-pointer-checks"
Packit Service aec53c
    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no)
Packit Service aec53c
    AC_MSG_RESULT($_gcc_wopt)
Packit Service aec53c
    CFLAGS=$_gcc_cflags_save;
Packit Service aec53c
    if test x"$_gcc_wopt" = xyes ; then
Packit Service aec53c
       CFLAGS="$CFLAGS -fno-delete-null-pointer-checks"
Packit Service aec53c
    fi
Packit Service aec53c
Packit Service aec53c
    CFLAGS="$CFLAGS -Wall"
Packit Service aec53c
    if test "$USE_MAINTAINER_MODE" = "yes"; then
Packit Service aec53c
        CFLAGS="$CFLAGS -Wcast-align -Wshadow -Wstrict-prototypes"
Packit Service aec53c
        CFLAGS="$CFLAGS -Wformat -Wno-format-y2k -Wformat-security"
Packit Service aec53c
Packit Service aec53c
        # If -Wno-missing-field-initializers is supported we can enable a
Packit Service aec53c
        # a bunch of really useful warnings.
Packit Service aec53c
        AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers])
Packit Service aec53c
        _gcc_cflags_save=$CFLAGS
Packit Service aec53c
        CFLAGS="-Wno-missing-field-initializers"
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no)
Packit Service aec53c
        AC_MSG_RESULT($_gcc_wopt)
Packit Service aec53c
        CFLAGS=$_gcc_cflags_save;
Packit Service aec53c
        if test x"$_gcc_wopt" = xyes ; then
Packit Service aec53c
          CFLAGS="$CFLAGS -W -Wextra -Wbad-function-cast"
Packit Service aec53c
          CFLAGS="$CFLAGS -Wwrite-strings"
Packit Service aec53c
          CFLAGS="$CFLAGS -Wdeclaration-after-statement"
Packit Service aec53c
          CFLAGS="$CFLAGS -Wno-missing-field-initializers"
Packit Service aec53c
          CFLAGS="$CFLAGS -Wno-sign-compare"
Packit Service aec53c
        fi
Packit Service aec53c
Packit Service aec53c
        AC_MSG_CHECKING([if gcc supports -Wpointer-arith])
Packit Service aec53c
        _gcc_cflags_save=$CFLAGS
Packit Service aec53c
        CFLAGS="-Wpointer-arith"
Packit Service aec53c
        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no)
Packit Service aec53c
        AC_MSG_RESULT($_gcc_wopt)
Packit Service aec53c
        CFLAGS=$_gcc_cflags_save;
Packit Service aec53c
        if test x"$_gcc_wopt" = xyes ; then
Packit Service aec53c
          CFLAGS="$CFLAGS -Wpointer-arith"
Packit Service aec53c
        fi
Packit Service aec53c
    fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
# Check whether as(1) supports a noeexecstack feature.  This test
Packit Service aec53c
# includes an override option.
Packit Service aec53c
CL_AS_NOEXECSTACK
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
AC_SUBST(LIBGCRYPT_CONFIG_API_VERSION)
Packit Service aec53c
AC_SUBST(LIBGCRYPT_CONFIG_LIBS)
Packit Service aec53c
AC_SUBST(LIBGCRYPT_CONFIG_CFLAGS)
Packit Service aec53c
AC_SUBST(LIBGCRYPT_CONFIG_HOST)
Packit Service aec53c
AC_SUBST(LIBGCRYPT_THREAD_MODULES)
Packit Service aec53c
Packit Service aec53c
AC_CONFIG_COMMANDS([gcrypt-conf],[[
Packit Service aec53c
chmod +x src/libgcrypt-config
Packit Service aec53c
]],[[
Packit Service aec53c
prefix=$prefix
Packit Service aec53c
exec_prefix=$exec_prefix
Packit Service aec53c
libdir=$libdir
Packit Service aec53c
datadir=$datadir
Packit Service aec53c
DATADIRNAME=$DATADIRNAME
Packit Service aec53c
]])
Packit Service aec53c
Packit Service aec53c
#####################
Packit Service aec53c
#### Conclusion. ####
Packit Service aec53c
#####################
Packit Service aec53c
Packit Service aec53c
# Check that requested feature can actually be used and define
Packit Service aec53c
# ENABLE_foo_SUPPORT macros.
Packit Service aec53c
Packit Service aec53c
if test x"$aesnisupport" = xyes ; then
Packit Service aec53c
  if test "$gcry_cv_gcc_inline_asm_ssse3" != "yes" ; then
Packit Service aec53c
    aesnisupport="no (unsupported by compiler)"
Packit Service aec53c
  fi
Packit Service aec53c
fi
Packit Service aec53c
if test x"$pclmulsupport" = xyes ; then
Packit Service aec53c
  if test "$gcry_cv_gcc_inline_asm_pclmul" != "yes" ; then
Packit Service aec53c
    pclmulsupport="no (unsupported by compiler)"
Packit Service aec53c
  fi
Packit Service aec53c
fi
Packit Service aec53c
if test x"$sse41support" = xyes ; then
Packit Service aec53c
  if test "$gcry_cv_gcc_inline_asm_sse41" != "yes" ; then
Packit Service aec53c
    sse41support="no (unsupported by compiler)"
Packit Service aec53c
  fi
Packit Service aec53c
fi
Packit Service aec53c
if test x"$avxsupport" = xyes ; then
Packit Service aec53c
  if test "$gcry_cv_gcc_inline_asm_avx" != "yes" ; then
Packit Service aec53c
    avxsupport="no (unsupported by compiler)"
Packit Service aec53c
  fi
Packit Service aec53c
fi
Packit Service aec53c
if test x"$avx2support" = xyes ; then
Packit Service aec53c
  if test "$gcry_cv_gcc_inline_asm_avx2" != "yes" ; then
Packit Service aec53c
    avx2support="no (unsupported by compiler)"
Packit Service aec53c
  fi
Packit Service aec53c
fi
Packit Service aec53c
if test x"$neonsupport" = xyes ; then
Packit Service aec53c
  if test "$gcry_cv_gcc_inline_asm_neon" != "yes" ; then
Packit Service aec53c
    if test "$gcry_cv_gcc_inline_asm_aarch64_neon" != "yes" ; then
Packit Service aec53c
      neonsupport="no (unsupported by compiler)"
Packit Service aec53c
    fi
Packit Service aec53c
  fi
Packit Service aec53c
fi
Packit Service aec53c
if test x"$armcryptosupport" = xyes ; then
Packit Service aec53c
  if test "$gcry_cv_gcc_inline_asm_aarch32_crypto" != "yes" ; then
Packit Service aec53c
    if test "$gcry_cv_gcc_inline_asm_aarch64_crypto" != "yes" ; then
Packit Service aec53c
      neonsupport="no (unsupported by compiler)"
Packit Service aec53c
    fi
Packit Service aec53c
  fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
if test x"$aesnisupport" = xyes ; then
Packit Service aec53c
  AC_DEFINE(ENABLE_AESNI_SUPPORT, 1,
Packit Service aec53c
            [Enable support for Intel AES-NI instructions.])
Packit Service aec53c
fi
Packit Service aec53c
if test x"$pclmulsupport" = xyes ; then
Packit Service aec53c
  AC_DEFINE(ENABLE_PCLMUL_SUPPORT, 1,
Packit Service aec53c
            [Enable support for Intel PCLMUL instructions.])
Packit Service aec53c
fi
Packit Service aec53c
if test x"$sse41support" = xyes ; then
Packit Service aec53c
  AC_DEFINE(ENABLE_SSE41_SUPPORT, 1,
Packit Service aec53c
            [Enable support for Intel SSE4.1 instructions.])
Packit Service aec53c
fi
Packit Service aec53c
if test x"$avxsupport" = xyes ; then
Packit Service aec53c
  AC_DEFINE(ENABLE_AVX_SUPPORT,1,
Packit Service aec53c
            [Enable support for Intel AVX instructions.])
Packit Service aec53c
fi
Packit Service aec53c
if test x"$avx2support" = xyes ; then
Packit Service aec53c
  AC_DEFINE(ENABLE_AVX2_SUPPORT,1,
Packit Service aec53c
            [Enable support for Intel AVX2 instructions.])
Packit Service aec53c
fi
Packit Service aec53c
if test x"$neonsupport" = xyes ; then
Packit Service aec53c
  AC_DEFINE(ENABLE_NEON_SUPPORT,1,
Packit Service aec53c
            [Enable support for ARM NEON instructions.])
Packit Service aec53c
fi
Packit Service aec53c
if test x"$armcryptosupport" = xyes ; then
Packit Service aec53c
  AC_DEFINE(ENABLE_ARM_CRYPTO_SUPPORT,1,
Packit Service aec53c
            [Enable support for ARMv8 Crypto Extension instructions.])
Packit Service aec53c
fi
Packit Service aec53c
if test x"$jentsupport" = xyes ; then
Packit Service aec53c
  AC_DEFINE(ENABLE_JENT_SUPPORT, 1,
Packit Service aec53c
            [Enable support for the jitter entropy collector.])
Packit Service aec53c
fi
Packit Service aec53c
if test x"$padlocksupport" = xyes ; then
Packit Service aec53c
  AC_DEFINE(ENABLE_PADLOCK_SUPPORT, 1,
Packit Service aec53c
            [Enable support for the PadLock engine.])
Packit Service aec53c
fi
Packit Service aec53c
if test x"$drngsupport" = xyes ; then
Packit Service aec53c
  AC_DEFINE(ENABLE_DRNG_SUPPORT, 1,
Packit Service aec53c
            [Enable support for Intel DRNG (RDRAND instruction).])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# Define conditional sources and config.h symbols depending on the
Packit Service aec53c
# selected ciphers, pubkey-ciphers, digests, kdfs, and random modules.
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(arcfour, $enabled_ciphers)
Packit Service aec53c
if test "$found" = "1"; then
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS arcfour.lo"
Packit Service aec53c
   AC_DEFINE(USE_ARCFOUR, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      x86_64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS arcfour-amd64.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(blowfish, $enabled_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS blowfish.lo"
Packit Service aec53c
   AC_DEFINE(USE_BLOWFISH, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      x86_64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS blowfish-amd64.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
      arm*-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS blowfish-arm.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(cast5, $enabled_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS cast5.lo"
Packit Service aec53c
   AC_DEFINE(USE_CAST5, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      x86_64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS cast5-amd64.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
      arm*-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS cast5-arm.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(des, $enabled_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS des.lo"
Packit Service aec53c
   AC_DEFINE(USE_DES, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      x86_64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS des-amd64.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(aes, $enabled_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael.lo"
Packit Service aec53c
   AC_DEFINE(USE_AES, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      x86_64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael-amd64.lo"
Packit Service aec53c
Packit Service aec53c
         # Build with the SSSE3 implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael-ssse3-amd64.lo"
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael-ssse3-amd64-asm.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
      arm*-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael-arm.lo"
Packit Service aec53c
Packit Service aec53c
         # Build with the ARMv8/AArch32 CE implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael-armv8-ce.lo"
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael-armv8-aarch32-ce.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
      aarch64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael-aarch64.lo"
Packit Service aec53c
Packit Service aec53c
         # Build with the ARMv8/AArch64 CE implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael-armv8-ce.lo"
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael-armv8-aarch64-ce.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
Packit Service aec53c
   case "$mpi_cpu_arch" in
Packit Service aec53c
     x86)
Packit Service aec53c
         # Build with the AES-NI implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael-aesni.lo"
Packit Service aec53c
Packit Service aec53c
         # Build with the Padlock implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael-padlock.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(twofish, $enabled_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS twofish.lo"
Packit Service aec53c
   AC_DEFINE(USE_TWOFISH, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      x86_64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS twofish-amd64.lo"
Packit Service aec53c
Packit Service aec53c
         if test x"$avx2support" = xyes ; then
Packit Service aec53c
            # Build with the AVX2 implementation
Packit Service aec53c
            GCRYPT_CIPHERS="$GCRYPT_CIPHERS twofish-avx2-amd64.lo"
Packit Service aec53c
         fi
Packit Service aec53c
      ;;
Packit Service aec53c
      arm*-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS twofish-arm.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
      aarch64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS twofish-aarch64.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(serpent, $enabled_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS serpent.lo"
Packit Service aec53c
   AC_DEFINE(USE_SERPENT, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      x86_64-*-*)
Packit Service aec53c
         # Build with the SSE2 implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS serpent-sse2-amd64.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
Packit Service aec53c
   if test x"$avx2support" = xyes ; then
Packit Service aec53c
      # Build with the AVX2 implementation
Packit Service aec53c
      GCRYPT_CIPHERS="$GCRYPT_CIPHERS serpent-avx2-amd64.lo"
Packit Service aec53c
   fi
Packit Service aec53c
Packit Service aec53c
   if test x"$neonsupport" = xyes ; then
Packit Service aec53c
      # Build with the NEON implementation
Packit Service aec53c
      GCRYPT_CIPHERS="$GCRYPT_CIPHERS serpent-armv7-neon.lo"
Packit Service aec53c
   fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(rfc2268, $enabled_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS rfc2268.lo"
Packit Service aec53c
   AC_DEFINE(USE_RFC2268, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(seed, $enabled_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS seed.lo"
Packit Service aec53c
   AC_DEFINE(USE_SEED, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(camellia, $enabled_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS camellia.lo camellia-glue.lo"
Packit Service aec53c
   AC_DEFINE(USE_CAMELLIA, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      arm*-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS camellia-arm.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
      aarch64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS camellia-aarch64.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
Packit Service aec53c
   if test x"$avxsupport" = xyes ; then
Packit Service aec53c
      if test x"$aesnisupport" = xyes ; then
Packit Service aec53c
        # Build with the AES-NI/AVX implementation
Packit Service aec53c
        GCRYPT_CIPHERS="$GCRYPT_CIPHERS camellia-aesni-avx-amd64.lo"
Packit Service aec53c
      fi
Packit Service aec53c
   fi
Packit Service aec53c
Packit Service aec53c
   if test x"$avx2support" = xyes ; then
Packit Service aec53c
      if test x"$aesnisupport" = xyes ; then
Packit Service aec53c
        # Build with the AES-NI/AVX2 implementation
Packit Service aec53c
        GCRYPT_CIPHERS="$GCRYPT_CIPHERS camellia-aesni-avx2-amd64.lo"
Packit Service aec53c
      fi
Packit Service aec53c
   fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(idea, $enabled_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS idea.lo"
Packit Service aec53c
   AC_DEFINE(USE_IDEA, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(salsa20, $enabled_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS salsa20.lo"
Packit Service aec53c
   AC_DEFINE(USE_SALSA20, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      x86_64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS salsa20-amd64.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
Packit Service aec53c
   if test x"$neonsupport" = xyes ; then
Packit Service aec53c
     # Build with the NEON implementation
Packit Service aec53c
     GCRYPT_CIPHERS="$GCRYPT_CIPHERS salsa20-armv7-neon.lo"
Packit Service aec53c
   fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(gost28147, $enabled_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS gost28147.lo"
Packit Service aec53c
   AC_DEFINE(USE_GOST28147, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(chacha20, $enabled_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS chacha20.lo"
Packit Service aec53c
   AC_DEFINE(USE_CHACHA20, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      x86_64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS chacha20-sse2-amd64.lo"
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS chacha20-ssse3-amd64.lo"
Packit Service aec53c
         GCRYPT_CIPHERS="$GCRYPT_CIPHERS chacha20-avx2-amd64.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
Packit Service aec53c
   if test x"$neonsupport" = xyes ; then
Packit Service aec53c
     # Build with the NEON implementation
Packit Service aec53c
     GCRYPT_CIPHERS="$GCRYPT_CIPHERS chacha20-armv7-neon.lo"
Packit Service aec53c
   fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
case "${host}" in
Packit Service aec53c
   x86_64-*-*)
Packit Service aec53c
      # Build with the assembly implementation
Packit Service aec53c
      GCRYPT_CIPHERS="$GCRYPT_CIPHERS poly1305-sse2-amd64.lo"
Packit Service aec53c
      GCRYPT_CIPHERS="$GCRYPT_CIPHERS poly1305-avx2-amd64.lo"
Packit Service aec53c
   ;;
Packit Service aec53c
esac
Packit Service aec53c
Packit Service aec53c
if test x"$neonsupport" = xyes ; then
Packit Service aec53c
   # Build with the NEON implementation
Packit Service aec53c
   GCRYPT_CIPHERS="$GCRYPT_CIPHERS poly1305-armv7-neon.lo"
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(dsa, $enabled_pubkey_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS dsa.lo"
Packit Service aec53c
   AC_DEFINE(USE_DSA, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(rsa, $enabled_pubkey_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS rsa.lo"
Packit Service aec53c
   AC_DEFINE(USE_RSA, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(elgamal, $enabled_pubkey_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS elgamal.lo"
Packit Service aec53c
   AC_DEFINE(USE_ELGAMAL, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(ecc, $enabled_pubkey_ciphers)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS \
Packit Service aec53c
                          ecc.lo ecc-curves.lo ecc-misc.lo \
Packit Service aec53c
                          ecc-ecdsa.lo ecc-eddsa.lo ecc-gost.lo"
Packit Service aec53c
   AC_DEFINE(USE_ECC, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(crc, $enabled_digests)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_DIGESTS="$GCRYPT_DIGESTS crc.lo"
Packit Service aec53c
   AC_DEFINE(USE_CRC, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      i?86-*-* | x86_64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_DIGESTS="$GCRYPT_DIGESTS crc-intel-pclmul.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(gostr3411-94, $enabled_digests)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   # GOST R 34.11-94 internally uses GOST 28147-89
Packit Service aec53c
   LIST_MEMBER(gost28147, $enabled_ciphers)
Packit Service aec53c
   if test "$found" = "1" ; then
Packit Service aec53c
      GCRYPT_DIGESTS="$GCRYPT_DIGESTS gostr3411-94.lo"
Packit Service aec53c
      AC_DEFINE(USE_GOST_R_3411_94, 1, [Defined if this module should be included])
Packit Service aec53c
   fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(stribog, $enabled_digests)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_DIGESTS="$GCRYPT_DIGESTS stribog.lo"
Packit Service aec53c
   AC_DEFINE(USE_GOST_R_3411_12, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(md2, $enabled_digests)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_DIGESTS="$GCRYPT_DIGESTS md2.lo"
Packit Service aec53c
   AC_DEFINE(USE_MD2, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(md4, $enabled_digests)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_DIGESTS="$GCRYPT_DIGESTS md4.lo"
Packit Service aec53c
   AC_DEFINE(USE_MD4, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(md5, $enabled_digests)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_DIGESTS="$GCRYPT_DIGESTS md5.lo"
Packit Service aec53c
   AC_DEFINE(USE_MD5, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(rmd160, $enabled_digests)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_DIGESTS="$GCRYPT_DIGESTS rmd160.lo"
Packit Service aec53c
   AC_DEFINE(USE_RMD160, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(sha256, $enabled_digests)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha256.lo"
Packit Service aec53c
   AC_DEFINE(USE_SHA256, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      x86_64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha256-ssse3-amd64.lo"
Packit Service aec53c
         GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha256-avx-amd64.lo"
Packit Service aec53c
         GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha256-avx2-bmi2-amd64.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
      arm*-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha256-armv8-aarch32-ce.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
      aarch64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha256-armv8-aarch64-ce.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(sha512, $enabled_digests)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha512.lo"
Packit Service aec53c
   AC_DEFINE(USE_SHA512, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      x86_64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha512-ssse3-amd64.lo"
Packit Service aec53c
         GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha512-avx-amd64.lo"
Packit Service aec53c
         GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha512-avx2-bmi2-amd64.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
      arm*-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha512-arm.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
Packit Service aec53c
   if test x"$neonsupport" = xyes ; then
Packit Service aec53c
     # Build with the NEON implementation
Packit Service aec53c
     GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha512-armv7-neon.lo"
Packit Service aec53c
   fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(sha3, $enabled_digests)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_DIGESTS="$GCRYPT_DIGESTS keccak.lo"
Packit Service aec53c
   AC_DEFINE(USE_SHA3, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      x86_64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         :
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
Packit Service aec53c
   if test x"$neonsupport" = xyes ; then
Packit Service aec53c
     # Build with the NEON implementation
Packit Service aec53c
     GCRYPT_DIGESTS="$GCRYPT_DIGESTS keccak-armv7-neon.lo"
Packit Service aec53c
   fi
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(tiger, $enabled_digests)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_DIGESTS="$GCRYPT_DIGESTS tiger.lo"
Packit Service aec53c
   AC_DEFINE(USE_TIGER, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(whirlpool, $enabled_digests)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_DIGESTS="$GCRYPT_DIGESTS whirlpool.lo"
Packit Service aec53c
   AC_DEFINE(USE_WHIRLPOOL, 1, [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
   case "${host}" in
Packit Service aec53c
      x86_64-*-*)
Packit Service aec53c
         # Build with the assembly implementation
Packit Service aec53c
         GCRYPT_DIGESTS="$GCRYPT_DIGESTS whirlpool-sse2-amd64.lo"
Packit Service aec53c
      ;;
Packit Service aec53c
   esac
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(blake2, $enabled_digests)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_DIGESTS="$GCRYPT_DIGESTS blake2.lo"
Packit Service aec53c
   AC_DEFINE(USE_BLAKE2, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
# SHA-1 needs to be included always for example because it is used by
Packit Service aec53c
# random-csprng.c.
Packit Service aec53c
GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha1.lo"
Packit Service aec53c
AC_DEFINE(USE_SHA1, 1,   [Defined if this module should be included])
Packit Service aec53c
Packit Service aec53c
case "${host}" in
Packit Service aec53c
  x86_64-*-*)
Packit Service aec53c
    # Build with the assembly implementation
Packit Service aec53c
    GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha1-ssse3-amd64.lo"
Packit Service aec53c
    GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha1-avx-amd64.lo"
Packit Service aec53c
    GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha1-avx-bmi2-amd64.lo"
Packit Service aec53c
  ;;
Packit Service aec53c
  arm*-*-*)
Packit Service aec53c
    # Build with the assembly implementation
Packit Service aec53c
    GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha1-armv7-neon.lo"
Packit Service aec53c
    GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha1-armv8-aarch32-ce.lo"
Packit Service aec53c
  ;;
Packit Service aec53c
  aarch64-*-*)
Packit Service aec53c
    # Build with the assembly implementation
Packit Service aec53c
    GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha1-armv8-aarch64-ce.lo"
Packit Service aec53c
  ;;
Packit Service aec53c
esac
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(scrypt, $enabled_kdfs)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_KDFS="$GCRYPT_KDFS scrypt.lo"
Packit Service aec53c
   AC_DEFINE(USE_SCRYPT, 1, [Defined if this module should be included])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(linux, $random_modules)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_RANDOM="$GCRYPT_RANDOM rndlinux.lo"
Packit Service aec53c
   AC_DEFINE(USE_RNDLINUX, 1, [Defined if the /dev/random RNG should be used.])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(unix, $random_modules)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_RANDOM="$GCRYPT_RANDOM rndunix.lo"
Packit Service aec53c
   AC_DEFINE(USE_RNDUNIX, 1, [Defined if the default Unix RNG should be used.])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(egd, $random_modules)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_RANDOM="$GCRYPT_RANDOM rndegd.lo"
Packit Service aec53c
   AC_DEFINE(USE_RNDEGD, 1, [Defined if the EGD based RNG should be used.])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(w32, $random_modules)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_RANDOM="$GCRYPT_RANDOM rndw32.lo"
Packit Service aec53c
   AC_DEFINE(USE_RNDW32, 1,
Packit Service aec53c
             [Defined if the Windows specific RNG should be used.])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
LIST_MEMBER(w32ce, $random_modules)
Packit Service aec53c
if test "$found" = "1" ; then
Packit Service aec53c
   GCRYPT_RANDOM="$GCRYPT_RANDOM rndw32ce.lo"
Packit Service aec53c
   AC_DEFINE(USE_RNDW32CE, 1,
Packit Service aec53c
             [Defined if the WindowsCE specific RNG should be used.])
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
AC_SUBST([GCRYPT_CIPHERS])
Packit Service aec53c
AC_SUBST([GCRYPT_PUBKEY_CIPHERS])
Packit Service aec53c
AC_SUBST([GCRYPT_DIGESTS])
Packit Service aec53c
AC_SUBST([GCRYPT_KDFS])
Packit Service aec53c
AC_SUBST([GCRYPT_RANDOM])
Packit Service aec53c
Packit Service aec53c
AC_SUBST(LIBGCRYPT_CIPHERS, $enabled_ciphers)
Packit Service aec53c
AC_SUBST(LIBGCRYPT_PUBKEY_CIPHERS, $enabled_pubkey_ciphers)
Packit Service aec53c
AC_SUBST(LIBGCRYPT_DIGESTS, $enabled_digests)
Packit Service aec53c
Packit Service aec53c
# For printing the configuration we need a colon separated list of
Packit Service aec53c
# algorithm names.
Packit Service aec53c
tmp=`echo "$enabled_ciphers" | tr ' ' : `
Packit Service aec53c
AC_DEFINE_UNQUOTED(LIBGCRYPT_CIPHERS, "$tmp",
Packit Service aec53c
                   [List of available cipher algorithms])
Packit Service aec53c
tmp=`echo "$enabled_pubkey_ciphers" | tr ' ' : `
Packit Service aec53c
AC_DEFINE_UNQUOTED(LIBGCRYPT_PUBKEY_CIPHERS, "$tmp",
Packit Service aec53c
                   [List of available public key cipher algorithms])
Packit Service aec53c
tmp=`echo "$enabled_digests" | tr ' ' : `
Packit Service aec53c
AC_DEFINE_UNQUOTED(LIBGCRYPT_DIGESTS, "$tmp",
Packit Service aec53c
                   [List of available digest algorithms])
Packit Service aec53c
tmp=`echo "$enabled_kdfs" | tr ' ' : `
Packit Service aec53c
AC_DEFINE_UNQUOTED(LIBGCRYPT_KDFS, "$tmp",
Packit Service aec53c
                   [List of available KDF algorithms])
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Define conditional sources depending on the used hardware platform.
Packit Service aec53c
# Note that all possible modules must also be listed in
Packit Service aec53c
# src/Makefile.am (EXTRA_libgcrypt_la_SOURCES).
Packit Service aec53c
#
Packit Service aec53c
GCRYPT_HWF_MODULES=
Packit Service aec53c
case "$mpi_cpu_arch" in
Packit Service aec53c
     x86)
Packit Service aec53c
        AC_DEFINE(HAVE_CPU_ARCH_X86, 1,   [Defined for the x86 platforms])
Packit Service aec53c
        GCRYPT_HWF_MODULES="hwf-x86.lo"
Packit Service aec53c
        ;;
Packit Service aec53c
     alpha)
Packit Service aec53c
        AC_DEFINE(HAVE_CPU_ARCH_ALPHA, 1, [Defined for Alpha platforms])
Packit Service aec53c
        ;;
Packit Service aec53c
     sparc)
Packit Service aec53c
        AC_DEFINE(HAVE_CPU_ARCH_SPARC, 1, [Defined for SPARC platforms])
Packit Service aec53c
        ;;
Packit Service aec53c
     mips)
Packit Service aec53c
        AC_DEFINE(HAVE_CPU_ARCH_MIPS, 1,  [Defined for MIPS platforms])
Packit Service aec53c
        ;;
Packit Service aec53c
     m68k)
Packit Service aec53c
        AC_DEFINE(HAVE_CPU_ARCH_M68K, 1,  [Defined for M68k platforms])
Packit Service aec53c
        ;;
Packit Service aec53c
     ppc)
Packit Service aec53c
        AC_DEFINE(HAVE_CPU_ARCH_PPC, 1,   [Defined for PPC platforms])
Packit Service aec53c
        ;;
Packit Service aec53c
     arm)
Packit Service aec53c
        AC_DEFINE(HAVE_CPU_ARCH_ARM, 1,   [Defined for ARM platforms])
Packit Service aec53c
        GCRYPT_HWF_MODULES="hwf-arm.lo"
Packit Service aec53c
        ;;
Packit Service aec53c
     aarch64)
Packit Service aec53c
        AC_DEFINE(HAVE_CPU_ARCH_ARM, 1,   [Defined for ARM AArch64 platforms])
Packit Service aec53c
        GCRYPT_HWF_MODULES="hwf-arm.lo"
Packit Service aec53c
        ;;
Packit Service aec53c
esac
Packit Service aec53c
AC_SUBST([GCRYPT_HWF_MODULES])
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Option to disable building of doc file
Packit Service aec53c
#
Packit Service aec53c
build_doc=yes
Packit Service aec53c
AC_ARG_ENABLE([doc], AC_HELP_STRING([--disable-doc],
Packit Service aec53c
                                    [do not build the documentation]),
Packit Service aec53c
                     build_doc=$enableval, build_doc=yes)
Packit Service aec53c
AM_CONDITIONAL([BUILD_DOC], [test "x$build_doc" != xno])
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
#
Packit Service aec53c
# Provide information about the build.
Packit Service aec53c
#
Packit Service aec53c
BUILD_REVISION="mym4_revision"
Packit Service aec53c
AC_SUBST(BUILD_REVISION)
Packit Service aec53c
AC_DEFINE_UNQUOTED(BUILD_REVISION, "$BUILD_REVISION",
Packit Service aec53c
                   [GIT commit id revision used to build this package])
Packit Service aec53c
Packit Service aec53c
changequote(,)dnl
Packit Service aec53c
BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./;s/\./,/g'`
Packit Service aec53c
changequote([,])dnl
Packit Service aec53c
BUILD_FILEVERSION="${BUILD_FILEVERSION}mym4_revision_dec"
Packit Service aec53c
AC_SUBST(BUILD_FILEVERSION)
Packit Service aec53c
Packit Service aec53c
AC_ARG_ENABLE([build-timestamp],
Packit Service aec53c
  AC_HELP_STRING([--enable-build-timestamp],
Packit Service aec53c
                 [set an explicit build timestamp for reproducibility.
Packit Service aec53c
                  (default is the current time in ISO-8601 format)]),
Packit Service aec53c
     [if test "$enableval" = "yes"; then
Packit Service aec53c
        BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date`
Packit Service aec53c
      else
Packit Service aec53c
        BUILD_TIMESTAMP="$enableval"
Packit Service aec53c
      fi],
Packit Service aec53c
     [BUILD_TIMESTAMP="<none>"])
Packit Service aec53c
AC_SUBST(BUILD_TIMESTAMP)
Packit Service aec53c
AC_DEFINE_UNQUOTED(BUILD_TIMESTAMP, "$BUILD_TIMESTAMP",
Packit Service aec53c
                   [The time this package was configured for a build])
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
# And create the files.
Packit Service aec53c
AC_CONFIG_FILES([
Packit Service aec53c
Makefile
Packit Service aec53c
m4/Makefile
Packit Service aec53c
compat/Makefile
Packit Service aec53c
mpi/Makefile
Packit Service aec53c
cipher/Makefile
Packit Service aec53c
random/Makefile
Packit Service aec53c
doc/Makefile
Packit Service aec53c
src/Makefile
Packit Service aec53c
src/gcrypt.h
Packit Service aec53c
src/libgcrypt-config
Packit Service aec53c
src/libgcrypt.pc
Packit Service aec53c
src/versioninfo.rc
Packit Service aec53c
tests/Makefile
Packit Service aec53c
])
Packit Service aec53c
AC_CONFIG_FILES([tests/hashtest-256g], [chmod +x tests/hashtest-256g])
Packit Service aec53c
AC_CONFIG_FILES([tests/basic-disable-all-hwf], [chmod +x tests/basic-disable-all-hwf])
Packit Service aec53c
AC_OUTPUT
Packit Service aec53c
Packit Service aec53c
Packit Service aec53c
detection_module="${GCRYPT_HWF_MODULES%.lo}"
Packit Service aec53c
test -n "$detection_module" || detection_module="none"
Packit Service aec53c
Packit Service aec53c
# Give some feedback
Packit Service aec53c
GCRY_MSG_SHOW([],[])
Packit Service aec53c
GCRY_MSG_SHOW([Libgcrypt],[v${VERSION} has been configured as follows:])
Packit Service aec53c
GCRY_MSG_SHOW([],[])
Packit Service aec53c
GCRY_MSG_SHOW([Platform:                 ],[$PRINTABLE_OS_NAME ($host)])
Packit Service aec53c
GCRY_MSG_SHOW([Hardware detection module:],[$detection_module])
Packit Service aec53c
GCRY_MSG_WRAP([Enabled cipher algorithms:],[$enabled_ciphers])
Packit Service aec53c
GCRY_MSG_WRAP([Enabled digest algorithms:],[$enabled_digests])
Packit Service aec53c
GCRY_MSG_WRAP([Enabled kdf algorithms:   ],[$enabled_kdfs])
Packit Service aec53c
GCRY_MSG_WRAP([Enabled pubkey algorithms:],[$enabled_pubkey_ciphers])
Packit Service aec53c
GCRY_MSG_SHOW([Random number generator:  ],[$random])
Packit Service aec53c
GCRY_MSG_SHOW([Try using jitter entropy: ],[$jentsupport])
Packit Service aec53c
GCRY_MSG_SHOW([Using linux capabilities: ],[$use_capabilities])
Packit Service aec53c
GCRY_MSG_SHOW([Try using Padlock crypto: ],[$padlocksupport])
Packit Service aec53c
GCRY_MSG_SHOW([Try using AES-NI crypto:  ],[$aesnisupport])
Packit Service aec53c
GCRY_MSG_SHOW([Try using Intel PCLMUL:   ],[$pclmulsupport])
Packit Service aec53c
GCRY_MSG_SHOW([Try using Intel SSE4.1:   ],[$sse41support])
Packit Service aec53c
GCRY_MSG_SHOW([Try using DRNG (RDRAND):  ],[$drngsupport])
Packit Service aec53c
GCRY_MSG_SHOW([Try using Intel AVX:      ],[$avxsupport])
Packit Service aec53c
GCRY_MSG_SHOW([Try using Intel AVX2:     ],[$avx2support])
Packit Service aec53c
GCRY_MSG_SHOW([Try using ARM NEON:       ],[$neonsupport])
Packit Service aec53c
GCRY_MSG_SHOW([Try using ARMv8 crypto:   ],[$armcryptosupport])
Packit Service aec53c
GCRY_MSG_SHOW([],[])
Packit Service aec53c
Packit Service aec53c
if test "x${gpg_config_script_warn}" != x; then
Packit Service aec53c
cat <
Packit Service aec53c
        Mismatches between the target platform and the to
Packit Service aec53c
        be used libraries have been been detected for:
Packit Service aec53c
         ${gpg_config_script_warn}
Packit Service aec53c
        Please check above for warning messages.
Packit Service aec53c
Packit Service aec53c
G10EOF
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
if test "$gcry_cv_gcc_attribute_aligned" != "yes" ; then
Packit Service aec53c
cat <
Packit Service aec53c
   Please not that your compiler does not support the GCC style
Packit Service aec53c
   aligned attribute. Using this software may evoke bus errors.
Packit Service aec53c
Packit Service aec53c
G10EOF
Packit Service aec53c
fi
Packit Service aec53c
Packit Service aec53c
if test -n "$gpl"; then
Packit Service aec53c
  echo "Please note that you are building a version of Libgcrypt with"
Packit Service aec53c
  echo "  $gpl"
Packit Service aec53c
  echo "included.  These parts are licensed under the GPL and thus the"
Packit Service aec53c
  echo "use of this library has to comply with the conditions of the GPL."
Packit Service aec53c
  echo ""
Packit Service aec53c
fi