Check if assembler is compatible with AMD64 assembly implementations
[libgcrypt.git] / configure.ac
1 # Configure.ac script for Libgcrypt
2 # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006,
3 #               2007, 2008, 2009, 2011 Free Software Foundation, Inc.
4 # Copyright (C) 2012, 2013  g10 Code GmbH
5 #
6 # This file is part of Libgcrypt.
7 #
8 # Libgcrypt is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU Lesser General Public License as
10 # published by the Free Software Foundation; either version 2.1 of
11 # the License, or (at your option) any later version.
12 #
13 # Libgcrypt is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 # GNU Lesser General Public License for more details.
17 #
18 # You should have received a copy of the GNU Lesser General Public
19 # License along with this program; if not, see <http://www.gnu.org/licenses/>.
20
21 # (Process this file with autoconf to produce a configure script.)
22 AC_REVISION($Revision$)
23 AC_PREREQ(2.60)
24 min_automake_version="1.10"
25
26 # To build a release you need to create a tag with the version number
27 # (git tag -s libgcrypt-n.m.k) and run "./autogen.sh --force".  Please
28 # bump the version number immediately after the release and do another
29 # commit and push so that the git magic is able to work.  See below
30 # for the LT versions.
31 m4_define(mym4_version_major, [1])
32 m4_define(mym4_version_minor, [6])
33 m4_define(mym4_version_micro, [0])
34
35 # Below is m4 magic to extract and compute the revision number, the
36 # decimalized short revision number, a beta version string, and a flag
37 # indicating a development version (mym4_isgit). Note that the m4
38 # processing is done by autoconf and not during the configure run.
39 m4_define(mym4_version,
40           [mym4_version_major.mym4_version_minor.mym4_version_micro])
41 m4_define([mym4_revision],
42           m4_esyscmd([git rev-parse --short HEAD | tr -d '\n\r']))
43 m4_define([mym4_revision_dec],
44           m4_esyscmd_s([echo $((0x$(echo ]mym4_revision[|head -c 4)))]))
45 m4_define([mym4_betastring],
46           m4_esyscmd_s([git describe --match 'libgcrypt-[0-9].*[0-9]' --long|\
47                         awk -F- '$3!=0{print"-beta"$3}']))
48 m4_define([mym4_isgit],m4_if(mym4_betastring,[],[no],[yes]))
49 m4_define([mym4_full_version],[mym4_version[]mym4_betastring])
50
51 AC_INIT([libgcrypt],[mym4_full_version],[http://bugs.gnupg.org])
52
53 # LT Version numbers, remember to change them just *before* a release.
54 #   (Interfaces removed:    CURRENT++, AGE=0, REVISION=0)
55 #   (Interfaces added:      CURRENT++, AGE++, REVISION=0)
56 #   (No interfaces changed:                   REVISION++)
57 # CAUTION: Due to the ABI change in 1.6 the LT version numbers below have
58 # already been set for the next release.  Thus don't update them for
59 # the 1.6.0 release.
60 LIBGCRYPT_LT_CURRENT=20
61 LIBGCRYPT_LT_AGE=0
62 LIBGCRYPT_LT_REVISION=0
63
64
65 # If the API is changed in an incompatible way: increment the next counter.
66 LIBGCRYPT_CONFIG_API_VERSION=1
67
68 NEED_GPG_ERROR_VERSION=1.11
69
70 PACKAGE=$PACKAGE_NAME
71 VERSION=$PACKAGE_VERSION
72
73 AC_CONFIG_SRCDIR([src/libgcrypt.vers])
74 AM_INIT_AUTOMAKE
75 AC_CONFIG_HEADER(config.h)
76 AC_CONFIG_MACRO_DIR([m4])
77 AC_CONFIG_LIBOBJ_DIR([compat])
78 AC_CANONICAL_HOST
79 AM_MAINTAINER_MODE
80
81 AH_TOP([
82 #ifndef _GCRYPT_CONFIG_H_INCLUDED
83 #define _GCRYPT_CONFIG_H_INCLUDED
84
85 /* Enable gpg-error's strerror macro for W32CE.  */
86 #define GPG_ERR_ENABLE_ERRNO_MACROS 1
87 ])
88
89 AH_BOTTOM([
90 #define _GCRYPT_IN_LIBGCRYPT 1
91
92 /* If the configure check for endianness has been disabled, get it from
93    OS macros.  This is intended for making fat binary builds on OS X.  */
94 #ifdef DISABLED_ENDIAN_CHECK
95 # if defined(__BIG_ENDIAN__)
96 #  define WORDS_BIGENDIAN 1
97 # elif defined(__LITTLE_ENDIAN__)
98 #  undef WORDS_BIGENDIAN
99 # else
100 #  error "No endianness found"
101 # endif
102 #endif /*DISABLED_ENDIAN_CHECK*/
103
104 /* We basically use the original Camellia source.  Make sure the symbols
105    properly prefixed.  */
106 #define CAMELLIA_EXT_SYM_PREFIX _gcry_
107
108 /* These error codes are used but not defined in the required
109    libgpg-error 1.11.  Define them here. */
110 #define GPG_ERR_NO_CRYPT_CTX       191
111 #define GPG_ERR_WRONG_CRYPT_CTX    192
112 #define GPG_ERR_BAD_CRYPT_CTX      193
113 #define GPG_ERR_CRYPT_CTX_CONFLICT 194
114 #define GPG_ERR_BROKEN_PUBKEY      195
115 #define GPG_ERR_BROKEN_SECKEY      196
116
117 #endif /*_GCRYPT_CONFIG_H_INCLUDED*/
118 ])
119
120 AH_VERBATIM([_REENTRANT],
121 [/* To allow the use of Libgcrypt in multithreaded programs we have to use
122     special features from the library. */
123 #ifndef _REENTRANT
124 # define _REENTRANT 1
125 #endif
126 ])
127
128
129 AC_SUBST(LIBGCRYPT_LT_CURRENT)
130 AC_SUBST(LIBGCRYPT_LT_AGE)
131 AC_SUBST(LIBGCRYPT_LT_REVISION)
132 AC_SUBST(PACKAGE)
133 AC_SUBST(VERSION)
134 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
135 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
136 VERSION_NUMBER=m4_esyscmd(printf "0x%02x%02x%02x" mym4_version_major \
137                           mym4_version_minor mym4_version_micro)
138 AC_SUBST(VERSION_NUMBER)
139
140
141 ######################
142 ##  Basic checks.  ### (we need some results later on (e.g. $GCC)
143 ######################
144
145 AC_PROG_MAKE_SET
146 missing_dir=`cd $ac_aux_dir && pwd`
147 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
148 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
149 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
150 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
151 # AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
152 AC_PROG_CC
153 AC_PROG_CPP
154 AM_PROG_CC_C_O
155 AM_PROG_AS
156 AC_ISC_POSIX
157 AC_PROG_INSTALL
158 AC_PROG_AWK
159
160 AC_GNU_SOURCE
161
162 # We need to compile and run a program on the build machine.  A
163 # comment in libgpg-error says that the AC_PROG_CC_FOR_BUILD macro in
164 # the AC archive is broken for autoconf 2.57.  Given that there is no
165 # newer version of that macro, we assume that it is also broken for
166 # autoconf 2.61 and thus we use a simple but usually sufficient
167 # approach.
168 AC_MSG_CHECKING(for cc for build)
169 if test "$cross_compiling" = "yes"; then
170   CC_FOR_BUILD="${CC_FOR_BUILD-cc}"
171 else
172   CC_FOR_BUILD="${CC_FOR_BUILD-$CC}"
173 fi
174 AC_MSG_RESULT($CC_FOR_BUILD)
175 AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler])
176
177
178 LT_PREREQ([2.2.6])
179 LT_INIT([win32-dll disable-static])
180 LT_LANG([Windows Resource])
181
182
183 ##########################
184 ## General definitions. ##
185 ##########################
186
187 # Used by libgcrypt-config
188 LIBGCRYPT_CONFIG_LIBS="-lgcrypt"
189 LIBGCRYPT_CONFIG_CFLAGS=""
190 LIBGCRYPT_CONFIG_HOST="$host"
191
192 # Definitions for symmetric ciphers.
193 available_ciphers="arcfour blowfish cast5 des aes twofish serpent rfc2268 seed"
194 available_ciphers="$available_ciphers camellia idea"
195 enabled_ciphers=""
196
197 # Definitions for public-key ciphers.
198 available_pubkey_ciphers="dsa elgamal rsa ecc"
199 enabled_pubkey_ciphers=""
200
201 # Definitions for message digests.
202 available_digests="crc md4 md5 rmd160 sha1 sha256"
203 available_digests_64="sha512 tiger whirlpool"
204 enabled_digests=""
205
206 # Definitions for kdfs (optional ones)
207 available_kdfs="s2k pkdf2"
208 available_kdfs_64="scrypt"
209 enabled_kdfs=""
210
211 # Definitions for random modules.
212 available_random_modules="linux egd unix"
213 auto_random_modules="$available_random_modules"
214
215 # Supported thread backends.
216 LIBGCRYPT_THREAD_MODULES=""
217
218 # Other definitions.
219 print_egd_notice=no
220 have_w32_system=no
221 have_w32ce_system=no
222 have_pthread=no
223
224
225 # Setup some stuff depending on host.
226 case "${host}" in
227     *-*-mingw32*)
228       ac_cv_have_dev_random=no
229       have_w32_system=yes
230       case "${host}" in
231         *-mingw32ce*)
232             have_w32ce_system=yes
233             available_random_modules="w32ce"
234             ;;
235         *)
236             available_random_modules="w32"
237             ;;
238       esac
239       AC_DEFINE(USE_ONLY_8DOT3,1,
240                 [set this to limit filenames to the 8.3 format])
241       AC_DEFINE(HAVE_DRIVE_LETTERS,1,
242                 [defined if we must run on a stupid file system])
243       AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
244                 [defined if we run on some of the PCDOS like systems
245                  (DOS, Windoze. OS/2) with special properties like
246                   no file modes])
247       ;;
248
249     i?86-emx-os2 | i?86-*-os2*emx)
250         # OS/2 with the EMX environment
251         ac_cv_have_dev_random=no
252         AC_DEFINE(HAVE_DRIVE_LETTERS)
253         AC_DEFINE(HAVE_DOSISH_SYSTEM)
254         ;;
255
256     i?86-*-msdosdjgpp*)
257         # DOS with the DJGPP environment
258         ac_cv_have_dev_random=no
259         AC_DEFINE(HAVE_DRIVE_LETTERS)
260         AC_DEFINE(HAVE_DOSISH_SYSTEM)
261         ;;
262
263     *-*-hpux*)
264         if test -z "$GCC" ; then
265             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
266         fi
267         ;;
268     *-dec-osf4*)
269         if test -z "$GCC" ; then
270             # Suppress all warnings
271             # to get rid of the unsigned/signed char mismatch warnings.
272             CFLAGS="$CFLAGS -w"
273         fi
274         ;;
275     m68k-atari-mint)
276         ;;
277     *)
278       ;;
279 esac
280
281 if test "$have_w32_system" = yes; then
282    AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
283    if test "$have_w32ce_system" = yes; then
284      AC_DEFINE(HAVE_W32CE_SYSTEM,1,[Defined if we run on WindowsCE])
285    fi
286 fi
287 AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
288 AM_CONDITIONAL(HAVE_W32CE_SYSTEM, test "$have_w32ce_system" = yes)
289
290
291
292 # A printable OS Name is sometimes useful.
293 case "${host}" in
294     *-*-mingw32ce*)
295         PRINTABLE_OS_NAME="W32CE"
296         ;;
297
298     *-*-mingw32*)
299         PRINTABLE_OS_NAME="W32"
300         ;;
301
302     i?86-emx-os2 | i?86-*-os2*emx )
303         PRINTABLE_OS_NAME="OS/2"
304         ;;
305
306     i?86-*-msdosdjgpp*)
307         PRINTABLE_OS_NAME="MSDOS/DJGPP"
308         ;;
309
310     *-linux*)
311         PRINTABLE_OS_NAME="GNU/Linux"
312         ;;
313
314     *)
315         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
316         ;;
317 esac
318
319 #
320 # Figure out the name of the random device
321 #
322 case "${host}" in
323     *-openbsd*)
324         NAME_OF_DEV_RANDOM="/dev/srandom"
325         NAME_OF_DEV_URANDOM="/dev/urandom"
326         ;;
327
328     *)
329         NAME_OF_DEV_RANDOM="/dev/random"
330         NAME_OF_DEV_URANDOM="/dev/urandom"
331         ;;
332 esac
333
334
335 AC_ARG_ENABLE(endian-check,
336               AC_HELP_STRING([--disable-endian-check],
337               [disable the endian check and trust the OS provided macros]),
338               endiancheck=$enableval,endiancheck=yes)
339 if test x"$endiancheck" = xyes ; then
340   AC_C_BIGENDIAN
341 else
342   AC_DEFINE(DISABLED_ENDIAN_CHECK,1,[configure did not test for endianess])
343 fi
344
345 AC_CHECK_SIZEOF(unsigned short, 2)
346 AC_CHECK_SIZEOF(unsigned int, 4)
347 AC_CHECK_SIZEOF(unsigned long, 4)
348 AC_CHECK_SIZEOF(unsigned long long, 0)
349
350 AC_TYPE_UINTPTR_T
351
352 if test "$ac_cv_sizeof_unsigned_short" = "0" \
353    || test "$ac_cv_sizeof_unsigned_int" = "0" \
354    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
355     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
356 fi
357
358 # Do we have any 64-bit data types?
359 if test "$ac_cv_sizeof_unsigned_int" != "8" \
360    && test "$ac_cv_sizeof_unsigned_long" != "8" \
361    && test "$ac_cv_sizeof_unsigned_long_long" != "8" \
362    && test "$ac_cv_sizeof_uint64_t" != "8"; then
363     AC_MSG_WARN([No 64-bit types.  Disabling TIGER/192, SCRYPT, SHA-384, \
364  and SHA-512])
365 else
366   available_digests="$available_digests $available_digests_64"
367   available_kdfs="$available_kdfs $available_kdfs_64"
368 fi
369
370 # If not specified otherwise, all available algorithms will be
371 # included.
372 default_ciphers="$available_ciphers"
373 default_pubkey_ciphers="$available_pubkey_ciphers"
374 default_digests="$available_digests"
375 default_kdfs="$available_kdfs"
376
377 # Substitutions to set generated files in a Emacs buffer to read-only.
378 AC_SUBST(emacs_local_vars_begin, ['Local Variables:'])
379 AC_SUBST(emacs_local_vars_read_only, ['buffer-read-only: t'])
380 AC_SUBST(emacs_local_vars_end, ['End:'])
381
382 ############################
383 ## Command line switches. ##
384 ############################
385
386 # Implementation of the --enable-ciphers switch.
387 AC_ARG_ENABLE(ciphers,
388               AC_HELP_STRING([--enable-ciphers=ciphers],
389                              [select the symmetric ciphers to include]),
390               [enabled_ciphers=`echo $enableval | tr ',:' '  ' | tr '[A-Z]' '[a-z]'`],
391               [enabled_ciphers=""])
392 if test "x$enabled_ciphers" = "x" \
393    -o "$enabled_ciphers" = "yes"  \
394    -o "$enabled_ciphers" = "no"; then
395    enabled_ciphers=$default_ciphers
396 fi
397 AC_MSG_CHECKING([which symmetric ciphers to include])
398 for cipher in $enabled_ciphers; do
399     LIST_MEMBER($cipher, $available_ciphers)
400     if test "$found" = "0"; then
401        AC_MSG_ERROR([unsupported cipher "$cipher" specified])
402     fi
403 done
404 AC_MSG_RESULT([$enabled_ciphers])
405
406 # Implementation of the --enable-pubkey-ciphers switch.
407 AC_ARG_ENABLE(pubkey-ciphers,
408               AC_HELP_STRING([--enable-pubkey-ciphers=ciphers],
409                              [select the public-key ciphers to include]),
410               [enabled_pubkey_ciphers=`echo $enableval | tr ',:' '  ' | tr '[A-Z]' '[a-z]'`],
411               [enabled_pubkey_ciphers=""])
412 if test "x$enabled_pubkey_ciphers" = "x" \
413    -o "$enabled_pubkey_ciphers" = "yes"  \
414    -o "$enabled_pubkey_ciphers" = "no"; then
415    enabled_pubkey_ciphers=$default_pubkey_ciphers
416 fi
417 AC_MSG_CHECKING([which public-key ciphers to include])
418 for cipher in $enabled_pubkey_ciphers; do
419     LIST_MEMBER($cipher, $available_pubkey_ciphers)
420     if test "$found" = "0"; then
421        AC_MSG_ERROR([unsupported public-key cipher specified])
422     fi
423 done
424 AC_MSG_RESULT([$enabled_pubkey_ciphers])
425
426 # Implementation of the --enable-digests switch.
427 AC_ARG_ENABLE(digests,
428               AC_HELP_STRING([--enable-digests=digests],
429                              [select the message digests to include]),
430               [enabled_digests=`echo $enableval | tr ',:' '  ' | tr '[A-Z]' '[a-z]'`],
431               [enabled_digests=""])
432 if test "x$enabled_digests" = "x" \
433    -o "$enabled_digests" = "yes"  \
434    -o "$enabled_digests" = "no"; then
435    enabled_digests=$default_digests
436 fi
437 AC_MSG_CHECKING([which message digests to include])
438 for digest in $enabled_digests; do
439     LIST_MEMBER($digest, $available_digests)
440     if test "$found" = "0"; then
441        AC_MSG_ERROR([unsupported message digest specified])
442     fi
443 done
444 AC_MSG_RESULT([$enabled_digests])
445
446 # Implementation of the --enable-kdfs switch.
447 AC_ARG_ENABLE(kdfs,
448       AC_HELP_STRING([--enable-kfds=kdfs],
449                      [select the KDFs to include]),
450       [enabled_kdfs=`echo $enableval | tr ',:' '  ' | tr '[A-Z]' '[a-z]'`],
451       [enabled_kdfs=""])
452 if test "x$enabled_kdfs" = "x" \
453    -o "$enabled_kdfs" = "yes"  \
454    -o "$enabled_kdfs" = "no"; then
455    enabled_kdfs=$default_kdfs
456 fi
457 AC_MSG_CHECKING([which key derivation functions to include])
458 for kdf in $enabled_kdfs; do
459     LIST_MEMBER($kdf, $available_kdfs)
460     if test "$found" = "0"; then
461        AC_MSG_ERROR([unsupported key derivation function specified])
462     fi
463 done
464 AC_MSG_RESULT([$enabled_kdfs])
465
466 # Implementation of the --enable-random switch.
467 AC_ARG_ENABLE(random,
468               AC_HELP_STRING([--enable-random=name],
469                              [select which random number generator to use]),
470               [random=`echo $enableval | tr '[A-Z]' '[a-z]'`],
471               [])
472 if test "x$random" = "x" -o "$random" = "yes" -o "$random" = "no"; then
473     random=default
474 fi
475 AC_MSG_CHECKING([which random module to use])
476 if test "$random" != "default" -a "$random" != "auto"; then
477     LIST_MEMBER($random, $available_random_modules)
478     if test "$found" = "0"; then
479        AC_MSG_ERROR([unsupported random module specified])
480     fi
481 fi
482 AC_MSG_RESULT($random)
483
484 # Implementation of the --disable-dev-random switch.
485 AC_MSG_CHECKING([whether use of /dev/random is requested])
486 AC_ARG_ENABLE(dev-random,
487 [  --disable-dev-random    disable the use of dev random],
488     try_dev_random=$enableval, try_dev_random=yes)
489 AC_MSG_RESULT($try_dev_random)
490
491 # Implementation of the --with-egd-socket switch.
492 AC_ARG_WITH(egd-socket,
493     [  --with-egd-socket=NAME  Use NAME for the EGD socket)],
494             egd_socket_name="$withval", egd_socket_name="" )
495 AC_DEFINE_UNQUOTED(EGD_SOCKET_NAME, "$egd_socket_name",
496                    [Define if you don't want the default EGD socket name.
497                     For details see cipher/rndegd.c])
498
499 # Implementation of the --enable-random-daemon
500 AC_MSG_CHECKING([whether the experimental random daemon is requested])
501 AC_ARG_ENABLE([random-daemon],
502               AC_HELP_STRING([--enable-random-daemon],
503                              [Build and support the experimental gcryptrnd]),
504               [use_random_daemon=$enableval],
505               [use_random_daemon=no])
506 AC_MSG_RESULT($use_random_daemon)
507 if test x$use_random_daemon = xyes ; then
508     AC_DEFINE(USE_RANDOM_DAEMON,1,
509               [Define to support the experimental random daemon])
510 fi
511 AM_CONDITIONAL(USE_RANDOM_DAEMON, test x$use_random_daemon = xyes)
512
513
514 # Implementation of --disable-asm.
515 AC_MSG_CHECKING([whether MPI assembler modules are requested])
516 AC_ARG_ENABLE([asm],
517               AC_HELP_STRING([--disable-asm],
518                              [Disable MPI assembler modules]),
519               [try_asm_modules=$enableval],
520               [try_asm_modules=yes])
521 AC_MSG_RESULT($try_asm_modules)
522
523 # Implementation of the --enable-m-guard switch.
524 AC_MSG_CHECKING([whether memory guard is requested])
525 AC_ARG_ENABLE(m-guard,
526               AC_HELP_STRING([--enable-m-guard],
527                              [Enable memory guard facility]),
528               [use_m_guard=$enableval], [use_m_guard=no])
529 AC_MSG_RESULT($use_m_guard)
530 if test "$use_m_guard" = yes ; then
531     AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
532 fi
533
534 # Implementation of the --with-capabilities switch.
535 # Check whether we want to use Linux capabilities
536 AC_MSG_CHECKING([whether use of capabilities is requested])
537 AC_ARG_WITH(capabilities,
538             AC_HELP_STRING([--with-capabilities],
539                            [Use linux capabilities [default=no]]),
540             [use_capabilities="$withval"],[use_capabilities=no])
541 AC_MSG_RESULT($use_capabilities)
542
543 # Implementation of the --enable-hmac-binary-check.
544 AC_MSG_CHECKING([whether a HMAC binary check is requested])
545 AC_ARG_ENABLE(hmac-binary-check,
546               AC_HELP_STRING([--enable-hmac-binary-check],
547                              [Enable library integrity check]),
548               [use_hmac_binary_check=$enableval],
549               [use_hmac_binary_check=no])
550 AC_MSG_RESULT($use_hmac_binary_check)
551 if test "$use_hmac_binary_check" = yes ; then
552     AC_DEFINE(ENABLE_HMAC_BINARY_CHECK,1,
553               [Define to support an HMAC based integrity check])
554 fi
555
556
557 # Implementation of the --disable-padlock-support switch.
558 AC_MSG_CHECKING([whether padlock support is requested])
559 AC_ARG_ENABLE(padlock-support,
560               AC_HELP_STRING([--disable-padlock-support],
561                  [Disable support for the PadLock Engine of VIA processors]),
562               padlocksupport=$enableval,padlocksupport=yes)
563 AC_MSG_RESULT($padlocksupport)
564 if test x"$padlocksupport" = xyes ; then
565   AC_DEFINE(ENABLE_PADLOCK_SUPPORT, 1,
566             [Enable support for the PadLock engine.])
567 fi
568
569 # Implementation of the --disable-aesni-support switch.
570 AC_MSG_CHECKING([whether AESNI support is requested])
571 AC_ARG_ENABLE(aesni-support,
572               AC_HELP_STRING([--disable-aesni-support],
573                  [Disable support for the Intel AES-NI instructions]),
574               aesnisupport=$enableval,aesnisupport=yes)
575 AC_MSG_RESULT($aesnisupport)
576
577 # Implementation of the --disable-drng-support switch.
578 AC_MSG_CHECKING([whether DRNG support is requested])
579 AC_ARG_ENABLE(drng-support,
580               AC_HELP_STRING([--disable-drng-support],
581                  [Disable support for the Intel DRNG (RDRAND instruction)]),
582               drngsupport=$enableval,drngsupport=yes)
583 AC_MSG_RESULT($drngsupport)
584 if test x"$drngsupport" = xyes ; then
585   AC_DEFINE(ENABLE_DRNG_SUPPORT, 1,
586             [Enable support for Intel DRNG (RDRAND instruction).])
587 fi
588
589 # Implementation of the --disable-avx-support switch.
590 AC_MSG_CHECKING([whether AVX support is requested])
591 AC_ARG_ENABLE(avx-support,
592               AC_HELP_STRING([--disable-avx-support],
593                  [Disable support for the Intel AVX instructions]),
594               avxsupport=$enableval,avxsupport=yes)
595 AC_MSG_RESULT($avxsupport)
596
597 # Implementation of the --disable-avx2-support switch.
598 AC_MSG_CHECKING([whether AVX2 support is requested])
599 AC_ARG_ENABLE(avx2-support,
600               AC_HELP_STRING([--disable-avx2-support],
601                  [Disable support for the Intel AVX2 instructions]),
602               avx2support=$enableval,avx2support=yes)
603 AC_MSG_RESULT($avx2support)
604
605 # Implementation of the --disable-O-flag-munging switch.
606 AC_MSG_CHECKING([whether a -O flag munging is requested])
607 AC_ARG_ENABLE([O-flag-munging],
608               AC_HELP_STRING([--disable-O-flag-munging],
609                  [Disable modification of the cc -O flag]),
610               [enable_o_flag_munging=$enableval],
611               [enable_o_flag_munging=yes])
612 AC_MSG_RESULT($enable_o_flag_munging)
613 AM_CONDITIONAL(ENABLE_O_FLAG_MUNGING, test "$enable_o_flag_munging" = "yes")
614
615
616
617 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
618                    [A human readable text with the name of the OS])
619
620 # For some systems we know that we have ld_version scripts.
621 # Use it then as default.
622 have_ld_version_script=no
623 case "${host}" in
624     *-*-linux*)
625         have_ld_version_script=yes
626         ;;
627     *-*-gnu*)
628         have_ld_version_script=yes
629         ;;
630 esac
631 AC_ARG_ENABLE([ld-version-script],
632               AC_HELP_STRING([--enable-ld-version-script],
633                              [enable/disable use of linker version script.
634                               (default is system dependent)]),
635               [have_ld_version_script=$enableval],
636               [ : ] )
637 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
638
639 AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM",
640                    [defined to the name of the strong random device])
641 AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM",
642                    [defined to the name of the weaker random device])
643
644
645 ###############################
646 #### Checks for libraries. ####
647 ###############################
648
649 #
650 # gpg-error is required.
651 #
652 AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION")
653 if test "x$GPG_ERROR_LIBS" = "x"; then
654   AC_MSG_ERROR([libgpg-error is needed.
655                 See ftp://ftp.gnupg.org/gcrypt/libgpg-error/ .])
656 fi
657
658 AC_DEFINE(GPG_ERR_SOURCE_DEFAULT, GPG_ERR_SOURCE_GCRYPT,
659           [The default error source for libgcrypt.])
660
661 #
662 # Check whether the GNU Pth library is available.  We require this
663 # to build the optional gcryptrnd program.
664 #
665 AC_ARG_WITH(pth-prefix,
666             AC_HELP_STRING([--with-pth-prefix=PFX],
667                            [prefix where GNU Pth is installed (optional)]),
668      pth_config_prefix="$withval", pth_config_prefix="")
669 if test x$pth_config_prefix != x ; then
670    PTH_CONFIG="$pth_config_prefix/bin/pth-config"
671 fi
672 if test "$use_random_daemon" = "yes"; then
673   AC_PATH_PROG(PTH_CONFIG, pth-config, no)
674   if test "$PTH_CONFIG" = "no"; then
675     AC_MSG_WARN([[
676 ***
677 *** To build the Libgcrypt's random number daemon
678 *** we need the support of the GNU Portable Threads Library.
679 *** Download it from ftp://ftp.gnu.org/gnu/pth/
680 *** On a Debian GNU/Linux system you might want to try
681 ***   apt-get install libpth-dev
682 ***]])
683   else
684     GNUPG_PTH_VERSION_CHECK([1.3.7])
685     if test $have_pth = yes; then
686        PTH_CFLAGS=`$PTH_CONFIG --cflags`
687        PTH_LIBS=`$PTH_CONFIG --ldflags`
688        PTH_LIBS="$PTH_LIBS `$PTH_CONFIG --libs --all`"
689        AC_DEFINE(USE_GNU_PTH, 1,
690                 [Defined if the GNU Portable Thread Library should be used])
691        AC_DEFINE(HAVE_PTH, 1,
692                 [Defined if the GNU Pth is available])
693     fi
694   fi
695 fi
696 AC_SUBST(PTH_CFLAGS)
697 AC_SUBST(PTH_LIBS)
698
699 #
700 # Check whether pthreads is available
701 #
702 AC_CHECK_LIB(pthread,pthread_create,have_pthread=yes)
703 if test "$have_pthread" = yes; then
704    AC_DEFINE(HAVE_PTHREAD, ,[Define if we have pthread.])
705 fi
706
707 #
708 # See which thread system we have
709 # FIXME: Thus duplicates the above check.
710 #
711 gl_LOCK
712
713 # Solaris needs -lsocket and -lnsl. Unisys system includes
714 # gethostbyname in libsocket but needs libnsl for socket.
715 AC_SEARCH_LIBS(setsockopt, [socket], ,
716         [AC_SEARCH_LIBS(setsockopt, [socket], , , [-lnsl])])
717 AC_SEARCH_LIBS(setsockopt, [nsl])
718
719 ##################################
720 #### Checks for header files. ####
721 ##################################
722
723 AC_HEADER_STDC
724 AC_CHECK_HEADERS(unistd.h sys/select.h sys/msg.h)
725 INSERT_SYS_SELECT_H=
726 if test x"$ac_cv_header_sys_select_h" = xyes; then
727   INSERT_SYS_SELECT_H=" include <sys/select.h>"
728 fi
729 AC_SUBST(INSERT_SYS_SELECT_H)
730
731
732 ##########################################
733 #### Checks for typedefs, structures, ####
734 ####  and compiler characteristics.   ####
735 ##########################################
736
737 AC_C_CONST
738 AC_C_INLINE
739 AC_TYPE_SIZE_T
740 AC_TYPE_SIGNAL
741 AC_DECL_SYS_SIGLIST
742 AC_TYPE_PID_T
743
744 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
745 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
746 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
747 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
748 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
749
750 gl_TYPE_SOCKLEN_T
751 case "${host}" in
752   *-*-mingw32*)
753     # socklen_t may or may not be defined depending on what headers
754     # are included.  To be safe we use int as this is the actual type.
755     FALLBACK_SOCKLEN_T="typedef int gcry_socklen_t;"
756     ;;
757   *)
758     if test ".$gl_cv_socklen_t_equiv" = "."; then
759       FALLBACK_SOCKLEN_T="typedef socklen_t gcry_socklen_t;"
760     else
761       FALLBACK_SOCKLEN_T="typedef ${gl_cv_socklen_t_equiv} gcry_socklen_t;"
762     fi
763 esac
764 AC_SUBST(FALLBACK_SOCKLEN_T)
765
766 #
767 # Check for ELF visibility support.
768 #
769 AC_CACHE_CHECK(whether the visibility attribute is supported,
770        gcry_cv_visibility_attribute,
771        [gcry_cv_visibility_attribute=no
772         AC_LANG_CONFTEST([AC_LANG_SOURCE(
773           [[int foo __attribute__ ((visibility ("hidden"))) = 1;
774             int bar __attribute__ ((visibility ("protected"))) = 1;
775           ]])])
776
777         if ${CC-cc} -Werror -S conftest.c -o conftest.s \
778                   1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
779             if grep '\.hidden.*foo' conftest.s >/dev/null 2>&1 ; then
780                 if grep '\.protected.*bar' conftest.s >/dev/null 2>&1; then
781                     gcry_cv_visibility_attribute=yes
782                 fi
783             fi
784         fi
785        ])
786 if test "$gcry_cv_visibility_attribute" = "yes"; then
787     AC_CACHE_CHECK(for broken visibility attribute,
788        gcry_cv_broken_visibility_attribute,
789        [gcry_cv_broken_visibility_attribute=yes
790         AC_LANG_CONFTEST([AC_LANG_SOURCE(
791           [[int foo (int x);
792             int bar (int x) __asm__ ("foo")
793                             __attribute__ ((visibility ("hidden")));
794             int bar (int x) { return x; }
795           ]])])
796
797         if ${CC-cc} -Werror -S conftest.c -o conftest.s \
798                   1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
799            if grep '\.hidden@<:@        _@:>@foo' conftest.s >/dev/null 2>&1;
800             then
801                gcry_cv_broken_visibility_attribute=no
802            fi
803         fi
804        ])
805 fi
806 if test "$gcry_cv_visibility_attribute" = "yes"; then
807     AC_CACHE_CHECK(for broken alias attribute,
808        gcry_cv_broken_alias_attribute,
809        [gcry_cv_broken_alias_attribute=yes
810         AC_LANG_CONFTEST([AC_LANG_SOURCE(
811           [[extern int foo (int x) __asm ("xyzzy");
812             int bar (int x) { return x; }
813             extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
814             extern int dfoo;
815             extern __typeof (dfoo) dfoo __asm ("abccb");
816             int dfoo = 1;
817           ]])])
818
819         if ${CC-cc} -Werror -S conftest.c -o conftest.s \
820                   1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
821            if grep 'xyzzy' conftest.s >/dev/null 2>&1 && \
822               grep 'abccb' conftest.s >/dev/null 2>&1; then
823               gcry_cv_broken_alias_attribute=no
824            fi
825         fi
826         ])
827 fi
828 if test "$gcry_cv_visibility_attribute" = "yes"; then
829     AC_CACHE_CHECK(if gcc supports -fvisibility=hidden,
830        gcry_cv_gcc_has_f_visibility,
831        [gcry_cv_gcc_has_f_visibility=no
832         _gcc_cflags_save=$CFLAGS
833         CFLAGS="-fvisibility=hidden"
834         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
835                           gcry_cv_gcc_has_f_visibility=yes)
836         CFLAGS=$_gcc_cflags_save;
837        ])
838 fi
839 if test "$gcry_cv_visibility_attribute" = "yes" \
840    && test "$gcry_cv_broken_visibility_attribute" != "yes" \
841    && test "$gcry_cv_broken_alias_attribute" != "yes" \
842    && test "$gcry_cv_gcc_has_f_visibility" = "yes"
843  then
844    AC_DEFINE(GCRY_USE_VISIBILITY, 1,
845                [Define to use the GNU C visibility attribute.])
846    CFLAGS="$CFLAGS -fvisibility=hidden"
847 fi
848
849
850 #
851 # Check whether the compiler supports the GCC style aligned attribute
852 #
853 AC_CACHE_CHECK([whether the GCC style aligned attribute is supported],
854        [gcry_cv_gcc_attribute_aligned],
855        [gcry_cv_gcc_attribute_aligned=no
856         AC_COMPILE_IFELSE([AC_LANG_SOURCE(
857           [[struct { int a; } foo __attribute__ ((aligned (16)));]])],
858           [gcry_cv_gcc_attribute_aligned=yes])])
859 if test "$gcry_cv_gcc_attribute_aligned" = "yes" ; then
860    AC_DEFINE(HAVE_GCC_ATTRIBUTE_ALIGNED,1,
861      [Defined if a GCC style "__attribute__ ((aligned (n))" is supported])
862 fi
863
864
865 #
866 # Check whether the compiler supports 'asm' or '__asm__' keyword for
867 # assembler blocks
868 #
869 AC_CACHE_CHECK([whether 'asm' assembler keyword is supported],
870        [gcry_cv_have_asm],
871        [gcry_cv_have_asm=no
872         AC_COMPILE_IFELSE([AC_LANG_SOURCE(
873           [[void a(void) { asm("":::"memory"); }]])],
874           [gcry_cv_have_asm=yes])])
875 AC_CACHE_CHECK([whether '__asm__' assembler keyword is supported],
876        [gcry_cv_have___asm__],
877        [gcry_cv_have___asm__=no
878         AC_COMPILE_IFELSE([AC_LANG_SOURCE(
879           [[void a(void) { __asm__("":::"memory"); }]])],
880           [gcry_cv_have___asm__=yes])])
881 if test "$gcry_cv_have_asm" = "no" ; then
882    if test "$gcry_cv_have___asm__" = "yes" ; then
883       AC_DEFINE(asm,__asm__,
884         [Define to supported assembler block keyword, if plain 'asm' was not
885          supported])
886    fi
887 fi
888
889
890 #
891 # Check whether GCC inline assembler supports SSSE3 instructions
892 # This is required for the AES-NI instructions.
893 #
894 AC_CACHE_CHECK([whether GCC inline assembler supports SSSE3 instructions],
895        [gcry_cv_gcc_inline_asm_ssse3],
896        [gcry_cv_gcc_inline_asm_ssse3=no
897         AC_COMPILE_IFELSE([AC_LANG_SOURCE(
898           [[static unsigned char be_mask[16] __attribute__ ((aligned (16))) =
899               { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
900             void a(void) {
901               __asm__("pshufb %[mask], %%xmm2\n\t"::[mask]"m"(*be_mask):);
902             }]])],
903           [gcry_cv_gcc_inline_asm_ssse3=yes])])
904 if test "$gcry_cv_gcc_inline_asm_ssse3" = "yes" ; then
905    AC_DEFINE(HAVE_GCC_INLINE_ASM_SSSE3,1,
906      [Defined if inline assembler supports SSSE3 instructions])
907 fi
908
909
910 #
911 # Check whether GCC inline assembler supports AVX instructions
912 #
913 AC_CACHE_CHECK([whether GCC inline assembler supports AVX instructions],
914        [gcry_cv_gcc_inline_asm_avx],
915        [gcry_cv_gcc_inline_asm_avx=no
916         AC_COMPILE_IFELSE([AC_LANG_SOURCE(
917           [[void a(void) {
918               __asm__("vaesdeclast (%[mem]),%%xmm0,%%xmm7\n\t"::[mem]"r"(0):);
919             }]])],
920           [gcry_cv_gcc_inline_asm_avx=yes])])
921 if test "$gcry_cv_gcc_inline_asm_avx" = "yes" ; then
922    AC_DEFINE(HAVE_GCC_INLINE_ASM_AVX,1,
923      [Defined if inline assembler supports AVX instructions])
924 fi
925
926
927 #
928 # Check whether GCC inline assembler supports AVX2 instructions
929 #
930 AC_CACHE_CHECK([whether GCC inline assembler supports AVX2 instructions],
931        [gcry_cv_gcc_inline_asm_avx2],
932        [gcry_cv_gcc_inline_asm_avx2=no
933         AC_COMPILE_IFELSE([AC_LANG_SOURCE(
934           [[void a(void) {
935               __asm__("vpbroadcastb %%xmm7,%%ymm1\n\t":::);
936             }]])],
937           [gcry_cv_gcc_inline_asm_avx2=yes])])
938 if test "$gcry_cv_gcc_inline_asm_avx2" = "yes" ; then
939    AC_DEFINE(HAVE_GCC_INLINE_ASM_AVX2,1,
940      [Defined if inline assembler supports AVX2 instructions])
941 fi
942
943
944 #
945 # Check whether GCC assembler supports features needed for our amd64
946 # implementations
947 #
948 AC_CACHE_CHECK([whether GCC assembler is compatible for amd64 assembly implementations],
949        [gcry_cv_gcc_amd64_platform_as_ok],
950        [gcry_cv_gcc_amd64_platform_as_ok=no
951         AC_COMPILE_IFELSE([AC_LANG_SOURCE(
952           [[__asm__(
953                 /* Test if '.set' is supported by underlying assembler.  */
954                 ".set a0, %rax\n\t"
955                 ".set b0, %rdx\n\t"
956                 "asmfunc:\n\t"
957                 "movq a0, b0;\n\t" /* Fails here if .set ignored by as.  */
958
959                 /* Test if '.type' and '.size' are supported.  */
960                 /* These work only on ELF targets. */
961                 /* TODO: add COFF (mingw64, cygwin64) support to assembly
962                  * implementations.  Mingw64/cygwin64 also require additional
963                  * work because they use different calling convention. */
964                 ".size asmfunc,.-asmfunc;\n\t"
965                 ".type asmfunc,@function;\n\t"
966             );]])],
967           [gcry_cv_gcc_amd64_platform_as_ok=yes])])
968 if test "$gcry_cv_gcc_amd64_platform_as_ok" = "yes" ; then
969    AC_DEFINE(HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS,1,
970      [Defined if underlying assembler is compatible with amd64 assembly implementations])
971 fi
972
973
974 #######################################
975 #### Checks for library functions. ####
976 #######################################
977
978 AC_FUNC_VPRINTF
979 # We have replacements for these in src/missing-string.c
980 AC_CHECK_FUNCS(stpcpy strcasecmp)
981 # We have replacements for these in src/g10lib.h
982 AC_CHECK_FUNCS(strtoul memmove stricmp atexit raise)
983 # Other checks
984 AC_CHECK_FUNCS(strerror rand mmap getpagesize sysconf waitpid wait4)
985 AC_CHECK_FUNCS(gettimeofday getrusage gethrtime clock_gettime syslog)
986 AC_CHECK_FUNCS(fcntl ftruncate)
987
988 GNUPG_CHECK_MLOCK
989
990 #
991 # Replacement functions.
992 #
993 AC_REPLACE_FUNCS([getpid clock])
994
995
996 #
997 # Check wether it is necessary to link against libdl.
998 #
999 DL_LIBS=""
1000 if test "$use_hmac_binary_check" = yes ; then
1001   _gcry_save_libs="$LIBS"
1002   LIBS=""
1003   AC_SEARCH_LIBS(dlopen, c dl,,,)
1004   DL_LIBS=$LIBS
1005   LIBS="$_gcry_save_libs"
1006   LIBGCRYPT_CONFIG_LIBS="${LIBGCRYPT_CONFIG_LIBS} ${DL_LIBS}"
1007 fi
1008 AC_SUBST(DL_LIBS)
1009
1010
1011 #
1012 # Check whether we can use Linux capabilities as requested.
1013 #
1014 if test "$use_capabilities" = "yes" ; then
1015 use_capabilities=no
1016 AC_CHECK_HEADERS(sys/capability.h)
1017 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
1018   AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
1019   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
1020      AC_DEFINE(USE_CAPABILITIES,1,
1021                [define if capabilities should be used])
1022      LIBS="$LIBS -lcap"
1023      use_capabilities=yes
1024   fi
1025 fi
1026 if test "$use_capabilities" = "no" ; then
1027     AC_MSG_WARN([[
1028 ***
1029 *** The use of capabilities on this system is not possible.
1030 *** You need a recent Linux kernel and some patches:
1031 ***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
1032 ***   fcap-module-990613.tar.gz     (kernel module)
1033 ***   libcap-1.92.tar.gz            (user mode library and utilities)
1034 *** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
1035 *** set (filesystems menu). Be warned: This code is *really* ALPHA.
1036 ***]])
1037 fi
1038 fi
1039
1040 # Check whether a random device is available.
1041 if test "$try_dev_random" = yes ; then
1042     AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
1043     [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
1044       ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
1045     if test "$ac_cv_have_dev_random" = yes; then
1046         AC_DEFINE(HAVE_DEV_RANDOM,1,
1047                  [defined if the system supports a random device] )
1048     fi
1049 else
1050     AC_MSG_CHECKING(for random device)
1051     ac_cv_have_dev_random=no
1052     AC_MSG_RESULT(has been disabled)
1053 fi
1054
1055 # Figure out the random modules for this configuration.
1056 if test "$random" = "default"; then
1057
1058     # Select default value.
1059     if test "$ac_cv_have_dev_random" = yes; then
1060         # Try Linuxish random device.
1061         random_modules="linux"
1062     else
1063         case "${host}" in
1064         *-*-mingw32ce*)
1065           # WindowsCE random device.
1066           random_modules="w32ce"
1067           ;;
1068         *-*-mingw32*|*-*-cygwin*)
1069           # Windows random device.
1070           random_modules="w32"
1071           ;;
1072         *)
1073           # Build everything, allow to select at runtime.
1074           random_modules="$auto_random_modules"
1075           ;;
1076         esac
1077     fi
1078 else
1079     if test "$random" = "auto"; then
1080         # Build everything, allow to select at runtime.
1081         random_modules="$auto_random_modules"
1082     else
1083         random_modules="$random"
1084     fi
1085 fi
1086
1087
1088 #
1089 # Setup assembler stuff.
1090 #
1091 # Note that config.links also defines mpi_cpu_arch, which is required
1092 # later on.
1093 #
1094 GNUPG_SYS_SYMBOL_UNDERSCORE()
1095 AC_ARG_ENABLE(mpi-path,
1096               AC_HELP_STRING([--enable-mpi-path=EXTRA_PATH],
1097               [prepend EXTRA_PATH to list of CPU specific optimizations]),
1098               mpi_extra_path="$enableval",mpi_extra_path="")
1099 AC_MSG_CHECKING(for mpi assembler functions)
1100 if test -f $srcdir/mpi/config.links ; then
1101     . $srcdir/mpi/config.links
1102     AC_CONFIG_LINKS("$mpi_ln_list")
1103     ac_cv_mpi_sflags="$mpi_sflags"
1104     AC_MSG_RESULT(done)
1105 else
1106     AC_MSG_RESULT(failed)
1107     AC_MSG_ERROR([mpi/config.links missing!])
1108 fi
1109 MPI_SFLAGS="$ac_cv_mpi_sflags"
1110 AC_SUBST(MPI_SFLAGS)
1111
1112 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_ADD1, test "$mpi_mod_asm_mpih_add1" = yes)
1113 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_SUB1, test "$mpi_mod_asm_mpih_sub1" = yes)
1114 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL1, test "$mpi_mod_asm_mpih_mul1" = yes)
1115 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL2, test "$mpi_mod_asm_mpih_mul2" = yes)
1116 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL3, test "$mpi_mod_asm_mpih_mul3" = yes)
1117 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_LSHIFT, test "$mpi_mod_asm_mpih_lshift" = yes)
1118 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_RSHIFT, test "$mpi_mod_asm_mpih_rshift" = yes)
1119 AM_CONDITIONAL(MPI_MOD_ASM_UDIV, test "$mpi_mod_asm_udiv" = yes)
1120 AM_CONDITIONAL(MPI_MOD_ASM_UDIV_QRNND, test "$mpi_mod_asm_udiv_qrnnd" = yes)
1121 AM_CONDITIONAL(MPI_MOD_C_MPIH_ADD1, test "$mpi_mod_c_mpih_add1" = yes)
1122 AM_CONDITIONAL(MPI_MOD_C_MPIH_SUB1, test "$mpi_mod_c_mpih_sub1" = yes)
1123 AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL1, test "$mpi_mod_c_mpih_mul1" = yes)
1124 AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL2, test "$mpi_mod_c_mpih_mul2" = yes)
1125 AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL3, test "$mpi_mod_c_mpih_mul3" = yes)
1126 AM_CONDITIONAL(MPI_MOD_C_MPIH_LSHIFT, test "$mpi_mod_c_mpih_lshift" = yes)
1127 AM_CONDITIONAL(MPI_MOD_C_MPIH_RSHIFT, test "$mpi_mod_c_mpih_rshift" = yes)
1128 AM_CONDITIONAL(MPI_MOD_C_UDIV, test "$mpi_mod_c_udiv" = yes)
1129 AM_CONDITIONAL(MPI_MOD_C_UDIV_QRNND, test "$mpi_mod_c_udiv_qrnnd" = yes)
1130
1131 if test mym4_isgit = "yes"; then
1132     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
1133               [Defined if this is not a regular release])
1134 fi
1135
1136
1137 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
1138
1139
1140 # This is handy for debugging so the compiler doesn't rearrange
1141 # things and eliminate variables.
1142 AC_ARG_ENABLE(optimization,
1143        AC_HELP_STRING([--disable-optimization],
1144                       [disable compiler optimization]),
1145                       [if test $enableval = no ; then
1146                          CFLAGS=`echo $CFLAGS | sed 's/-O[[0-9]]//'`
1147                        fi])
1148
1149 # CFLAGS mangling when using gcc.
1150 if test "$GCC" = yes; then
1151     CFLAGS="$CFLAGS -Wall"
1152     if test "$USE_MAINTAINER_MODE" = "yes"; then
1153         CFLAGS="$CFLAGS -Wcast-align -Wshadow -Wstrict-prototypes"
1154         CFLAGS="$CFLAGS -Wformat -Wno-format-y2k -Wformat-security"
1155
1156         # If -Wno-missing-field-initializers is supported we can enable a
1157         # a bunch of really useful warnings.
1158         AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers])
1159         _gcc_cflags_save=$CFLAGS
1160         CFLAGS="-Wno-missing-field-initializers"
1161         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no)
1162         AC_MSG_RESULT($_gcc_wopt)
1163         CFLAGS=$_gcc_cflags_save;
1164         if test x"$_gcc_wopt" = xyes ; then
1165           CFLAGS="$CFLAGS -W -Wextra -Wbad-function-cast"
1166           CFLAGS="$CFLAGS -Wwrite-strings"
1167           CFLAGS="$CFLAGS -Wdeclaration-after-statement"
1168           CFLAGS="$CFLAGS -Wno-missing-field-initializers"
1169           CFLAGS="$CFLAGS -Wno-sign-compare"
1170         fi
1171
1172         AC_MSG_CHECKING([if gcc supports -Wpointer-arith])
1173         _gcc_cflags_save=$CFLAGS
1174         CFLAGS="-Wpointer-arith"
1175         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no)
1176         AC_MSG_RESULT($_gcc_wopt)
1177         CFLAGS=$_gcc_cflags_save;
1178         if test x"$_gcc_wopt" = xyes ; then
1179           CFLAGS="$CFLAGS -Wpointer-arith"
1180         fi
1181     fi
1182
1183 fi
1184
1185 # Check whether as(1) supports a noeexecstack feature.  This test
1186 # includes an override option.
1187 CL_AS_NOEXECSTACK
1188
1189
1190 AC_SUBST(LIBGCRYPT_CONFIG_API_VERSION)
1191 AC_SUBST(LIBGCRYPT_CONFIG_LIBS)
1192 AC_SUBST(LIBGCRYPT_CONFIG_CFLAGS)
1193 AC_SUBST(LIBGCRYPT_CONFIG_HOST)
1194 AC_SUBST(LIBGCRYPT_THREAD_MODULES)
1195
1196 AC_CONFIG_COMMANDS([gcrypt-conf],[[
1197 chmod +x src/libgcrypt-config
1198 ]],[[
1199 prefix=$prefix
1200 exec_prefix=$exec_prefix
1201 libdir=$libdir
1202 datadir=$datadir
1203 DATADIRNAME=$DATADIRNAME
1204 ]])
1205
1206 #####################
1207 #### Conclusion. ####
1208 #####################
1209
1210 # Check that requested feature can actually be used and define
1211 # ENABLE_foo_SUPPORT macros.
1212
1213 if test x"$aesnisupport" = xyes ; then
1214   if test "$gcry_cv_gcc_inline_asm_ssse3" != "yes" ; then
1215     aesnisupport="no (unsupported by compiler)"
1216   fi
1217 fi
1218 if test x"$avxsupport" = xyes ; then
1219   if test "$gcry_cv_gcc_inline_asm_avx" != "yes" ; then
1220     avxsupport="no (unsupported by compiler)"
1221   fi
1222 fi
1223 if test x"$avx2support" = xyes ; then
1224   if test "$gcry_cv_gcc_inline_asm_avx2" != "yes" ; then
1225     avx2support="no (unsupported by compiler)"
1226   fi
1227 fi
1228
1229 if test x"$aesnisupport" = xyes ; then
1230   AC_DEFINE(ENABLE_AESNI_SUPPORT, 1,
1231             [Enable support for Intel AES-NI instructions.])
1232 fi
1233 if test x"$avxsupport" = xyes ; then
1234   AC_DEFINE(ENABLE_AVX_SUPPORT,1,
1235             [Enable support for Intel AVX instructions.])
1236 fi
1237 if test x"$avx2support" = xyes ; then
1238   AC_DEFINE(ENABLE_AVX2_SUPPORT,1,
1239             [Enable support for Intel AVX2 instructions.])
1240 fi
1241
1242
1243 # Define conditional sources and config.h symbols depending on the
1244 # selected ciphers, pubkey-ciphers, digests, kdfs, and random modules.
1245
1246 LIST_MEMBER(arcfour, $enabled_ciphers)
1247 if test "$found" = "1"; then
1248    GCRYPT_CIPHERS="$GCRYPT_CIPHERS arcfour.lo"
1249    AC_DEFINE(USE_ARCFOUR, 1, [Defined if this module should be included])
1250 fi
1251
1252 LIST_MEMBER(blowfish, $enabled_ciphers)
1253 if test "$found" = "1" ; then
1254    GCRYPT_CIPHERS="$GCRYPT_CIPHERS blowfish.lo"
1255    AC_DEFINE(USE_BLOWFISH, 1, [Defined if this module should be included])
1256
1257    case "${host}" in
1258       x86_64-*-*)
1259          # Build with the assembly implementation
1260          GCRYPT_CIPHERS="$GCRYPT_CIPHERS blowfish-amd64.lo"
1261       ;;
1262    esac
1263 fi
1264
1265 LIST_MEMBER(cast5, $enabled_ciphers)
1266 if test "$found" = "1" ; then
1267    GCRYPT_CIPHERS="$GCRYPT_CIPHERS cast5.lo"
1268    AC_DEFINE(USE_CAST5, 1, [Defined if this module should be included])
1269
1270    case "${host}" in
1271       x86_64-*-*)
1272          # Build with the assembly implementation
1273          GCRYPT_CIPHERS="$GCRYPT_CIPHERS cast5-amd64.lo"
1274       ;;
1275    esac
1276 fi
1277
1278 LIST_MEMBER(des, $enabled_ciphers)
1279 if test "$found" = "1" ; then
1280    GCRYPT_CIPHERS="$GCRYPT_CIPHERS des.lo"
1281    AC_DEFINE(USE_DES, 1, [Defined if this module should be included])
1282 fi
1283
1284 LIST_MEMBER(aes, $enabled_ciphers)
1285 if test "$found" = "1" ; then
1286    GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael.lo"
1287    AC_DEFINE(USE_AES, 1, [Defined if this module should be included])
1288
1289    case "${host}" in
1290       x86_64-*-*)
1291          # Build with the assembly implementation
1292          GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael-amd64.lo"
1293       ;;
1294    esac
1295 fi
1296
1297 LIST_MEMBER(twofish, $enabled_ciphers)
1298 if test "$found" = "1" ; then
1299    GCRYPT_CIPHERS="$GCRYPT_CIPHERS twofish.lo"
1300    AC_DEFINE(USE_TWOFISH, 1, [Defined if this module should be included])
1301
1302    case "${host}" in
1303       x86_64-*-*)
1304          # Build with the assembly implementation
1305          GCRYPT_CIPHERS="$GCRYPT_CIPHERS twofish-amd64.lo"
1306       ;;
1307    esac
1308 fi
1309
1310 LIST_MEMBER(serpent, $enabled_ciphers)
1311 if test "$found" = "1" ; then
1312    GCRYPT_CIPHERS="$GCRYPT_CIPHERS serpent.lo"
1313    AC_DEFINE(USE_SERPENT, 1, [Defined if this module should be included])
1314
1315    case "${host}" in
1316       x86_64-*-*)
1317          # Build with the SSE2 implementation
1318          GCRYPT_CIPHERS="$GCRYPT_CIPHERS serpent-sse2-amd64.lo"
1319       ;;
1320    esac
1321
1322    if test x"$avx2support" = xyes ; then
1323       # Build with the AVX2 implementation
1324       GCRYPT_CIPHERS="$GCRYPT_CIPHERS serpent-avx2-amd64.lo"
1325    fi
1326 fi
1327
1328 LIST_MEMBER(rfc2268, $enabled_ciphers)
1329 if test "$found" = "1" ; then
1330    GCRYPT_CIPHERS="$GCRYPT_CIPHERS rfc2268.lo"
1331    AC_DEFINE(USE_RFC2268, 1, [Defined if this module should be included])
1332 fi
1333
1334 LIST_MEMBER(seed, $enabled_ciphers)
1335 if test "$found" = "1" ; then
1336    GCRYPT_CIPHERS="$GCRYPT_CIPHERS seed.lo"
1337    AC_DEFINE(USE_SEED, 1, [Defined if this module should be included])
1338 fi
1339
1340 LIST_MEMBER(camellia, $enabled_ciphers)
1341 if test "$found" = "1" ; then
1342    GCRYPT_CIPHERS="$GCRYPT_CIPHERS camellia.lo camellia-glue.lo"
1343    AC_DEFINE(USE_CAMELLIA, 1, [Defined if this module should be included])
1344
1345    if test x"$avxsupport" = xyes ; then
1346       if test x"$aesnisupport" = xyes ; then
1347         # Build with the AES-NI/AVX implementation
1348         GCRYPT_CIPHERS="$GCRYPT_CIPHERS camellia-aesni-avx-amd64.lo"
1349       fi
1350    fi
1351
1352    if test x"$avx2support" = xyes ; then
1353       if test x"$aesnisupport" = xyes ; then
1354         # Build with the AES-NI/AVX2 implementation
1355         GCRYPT_CIPHERS="$GCRYPT_CIPHERS camellia-aesni-avx2-amd64.lo"
1356       fi
1357    fi
1358 fi
1359
1360 LIST_MEMBER(idea, $enabled_ciphers)
1361 if test "$found" = "1" ; then
1362    GCRYPT_CIPHERS="$GCRYPT_CIPHERS idea.lo"
1363    AC_DEFINE(USE_IDEA, 1, [Defined if this module should be included])
1364 fi
1365
1366 LIST_MEMBER(dsa, $enabled_pubkey_ciphers)
1367 if test "$found" = "1" ; then
1368    GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS dsa.lo"
1369    AC_DEFINE(USE_DSA, 1, [Defined if this module should be included])
1370 fi
1371
1372 LIST_MEMBER(rsa, $enabled_pubkey_ciphers)
1373 if test "$found" = "1" ; then
1374    GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS rsa.lo"
1375    AC_DEFINE(USE_RSA, 1, [Defined if this module should be included])
1376 fi
1377
1378 LIST_MEMBER(elgamal, $enabled_pubkey_ciphers)
1379 if test "$found" = "1" ; then
1380    GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS elgamal.lo"
1381    AC_DEFINE(USE_ELGAMAL, 1, [Defined if this module should be included])
1382 fi
1383
1384 LIST_MEMBER(ecc, $enabled_pubkey_ciphers)
1385 if test "$found" = "1" ; then
1386    GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS ecc.lo"
1387    AC_DEFINE(USE_ECC, 1, [Defined if this module should be included])
1388 fi
1389
1390 LIST_MEMBER(crc, $enabled_digests)
1391 if test "$found" = "1" ; then
1392    GCRYPT_DIGESTS="$GCRYPT_DIGESTS crc.lo"
1393    AC_DEFINE(USE_CRC, 1, [Defined if this module should be included])
1394 fi
1395
1396 LIST_MEMBER(md4, $enabled_digests)
1397 if test "$found" = "1" ; then
1398    GCRYPT_DIGESTS="$GCRYPT_DIGESTS md4.lo"
1399    AC_DEFINE(USE_MD4, 1, [Defined if this module should be included])
1400 fi
1401
1402 LIST_MEMBER(md5, $enabled_digests)
1403 if test "$found" = "1" ; then
1404    GCRYPT_DIGESTS="$GCRYPT_DIGESTS md5.lo"
1405    AC_DEFINE(USE_MD5, 1, [Defined if this module should be included])
1406 fi
1407
1408 LIST_MEMBER(sha256, $enabled_digests)
1409 if test "$found" = "1" ; then
1410    GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha256.lo"
1411    AC_DEFINE(USE_SHA256, 1, [Defined if this module should be included])
1412 fi
1413
1414 LIST_MEMBER(sha512, $enabled_digests)
1415 if test "$found" = "1" ; then
1416    GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha512.lo"
1417    AC_DEFINE(USE_SHA512, 1, [Defined if this module should be included])
1418 fi
1419
1420 LIST_MEMBER(tiger, $enabled_digests)
1421 if test "$found" = "1" ; then
1422    GCRYPT_DIGESTS="$GCRYPT_DIGESTS tiger.lo"
1423    AC_DEFINE(USE_TIGER, 1, [Defined if this module should be included])
1424 fi
1425
1426 LIST_MEMBER(whirlpool, $enabled_digests)
1427 if test "$found" = "1" ; then
1428    GCRYPT_DIGESTS="$GCRYPT_DIGESTS whirlpool.lo"
1429    AC_DEFINE(USE_WHIRLPOOL, 1, [Defined if this module should be included])
1430 fi
1431
1432 # rmd160 and sha1 should be included always.
1433 GCRYPT_DIGESTS="$GCRYPT_DIGESTS rmd160.lo sha1.lo"
1434 AC_DEFINE(USE_RMD160, 1, [Defined if this module should be included])
1435 AC_DEFINE(USE_SHA1, 1,   [Defined if this module should be included])
1436
1437 LIST_MEMBER(scrypt, $enabled_kdfs)
1438 if test "$found" = "1" ; then
1439    GCRYPT_KDFS="$GCRYPT_KDFS scrypt.lo"
1440    AC_DEFINE(USE_SCRYPT, 1, [Defined if this module should be included])
1441 fi
1442
1443 LIST_MEMBER(linux, $random_modules)
1444 if test "$found" = "1" ; then
1445    GCRYPT_RANDOM="$GCRYPT_RANDOM rndlinux.lo"
1446    AC_DEFINE(USE_RNDLINUX, 1, [Defined if the /dev/random RNG should be used.])
1447 fi
1448
1449 LIST_MEMBER(unix, $random_modules)
1450 if test "$found" = "1" ; then
1451    GCRYPT_RANDOM="$GCRYPT_RANDOM rndunix.lo"
1452    AC_DEFINE(USE_RNDUNIX, 1, [Defined if the default Unix RNG should be used.])
1453    print_egd_notice=yes
1454 fi
1455
1456 LIST_MEMBER(egd, $random_modules)
1457 if test "$found" = "1" ; then
1458    GCRYPT_RANDOM="$GCRYPT_RANDOM rndegd.lo"
1459    AC_DEFINE(USE_RNDEGD, 1, [Defined if the EGD based RNG should be used.])
1460 fi
1461
1462 LIST_MEMBER(w32, $random_modules)
1463 if test "$found" = "1" ; then
1464    GCRYPT_RANDOM="$GCRYPT_RANDOM rndw32.lo"
1465    AC_DEFINE(USE_RNDW32, 1,
1466              [Defined if the Windows specific RNG should be used.])
1467 fi
1468
1469 LIST_MEMBER(w32ce, $random_modules)
1470 if test "$found" = "1" ; then
1471    GCRYPT_RANDOM="$GCRYPT_RANDOM rndw32ce.lo"
1472    AC_DEFINE(USE_RNDW32CE, 1,
1473              [Defined if the WindowsCE specific RNG should be used.])
1474 fi
1475
1476 AC_SUBST([GCRYPT_CIPHERS])
1477 AC_SUBST([GCRYPT_PUBKEY_CIPHERS])
1478 AC_SUBST([GCRYPT_DIGESTS])
1479 AC_SUBST([GCRYPT_KDFS])
1480 AC_SUBST([GCRYPT_RANDOM])
1481
1482 AC_SUBST(LIBGCRYPT_CIPHERS, $enabled_ciphers)
1483 AC_SUBST(LIBGCRYPT_PUBKEY_CIPHERS, $enabled_pubkey_ciphers)
1484 AC_SUBST(LIBGCRYPT_DIGESTS, $enabled_digests)
1485
1486 # For printing the configuration we need a colon separated list of
1487 # algorithm names.
1488 tmp=`echo "$enabled_ciphers" | tr ' ' : `
1489 AC_DEFINE_UNQUOTED(LIBGCRYPT_CIPHERS, "$tmp",
1490                    [List of available cipher algorithms])
1491 tmp=`echo "$enabled_pubkey_ciphers" | tr ' ' : `
1492 AC_DEFINE_UNQUOTED(LIBGCRYPT_PUBKEY_CIPHERS, "$tmp",
1493                    [List of available public key cipher algorithms])
1494 tmp=`echo "$enabled_digests" | tr ' ' : `
1495 AC_DEFINE_UNQUOTED(LIBGCRYPT_DIGESTS, "$tmp",
1496                    [List of available digest algorithms])
1497 tmp=`echo "$enabled_kdfs" | tr ' ' : `
1498 AC_DEFINE_UNQUOTED(LIBGCRYPT_KDFS, "$tmp",
1499                    [List of available KDF algorithms])
1500
1501
1502 #
1503 # Define conditional sources depending on the used hardware platform.
1504 # Note that all possible modules must also be listed in
1505 # src/Makefile.am (EXTRA_libgcrypt_la_SOURCES).
1506 #
1507 GCRYPT_HWF_MODULES=
1508 case "$mpi_cpu_arch" in
1509      x86)
1510         AC_DEFINE(HAVE_CPU_ARCH_X86, 1,   [Defined for the x86 platforms])
1511         GCRYPT_HWF_MODULES="hwf-x86.lo"
1512         ;;
1513      alpha)
1514         AC_DEFINE(HAVE_CPU_ARCH_ALPHA, 1, [Defined for Alpha platforms])
1515         ;;
1516      sparc)
1517         AC_DEFINE(HAVE_CPU_ARCH_SPARC, 1, [Defined for SPARC platforms])
1518         ;;
1519      mips)
1520         AC_DEFINE(HAVE_CPU_ARCH_MIPS, 1,  [Defined for MIPS platforms])
1521         ;;
1522      m68k)
1523         AC_DEFINE(HAVE_CPU_ARCH_M68K, 1,  [Defined for M68k platforms])
1524         ;;
1525      ppc)
1526         AC_DEFINE(HAVE_CPU_ARCH_PPC, 1,   [Defined for PPC platforms])
1527         ;;
1528      arm)
1529         AC_DEFINE(HAVE_CPU_ARCH_ARM, 1,   [Defined for ARM platforms])
1530         ;;
1531 esac
1532 AC_SUBST([GCRYPT_HWF_MODULES])
1533
1534
1535 #
1536 # Provide information about the build.
1537 #
1538 BUILD_REVISION="mym4_revision"
1539 AC_SUBST(BUILD_REVISION)
1540 AC_DEFINE_UNQUOTED(BUILD_REVISION, "$BUILD_REVISION",
1541                    [GIT commit id revision used to build this package])
1542
1543 changequote(,)dnl
1544 BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./;s/\./,/g'`
1545 changequote([,])dnl
1546 BUILD_FILEVERSION="${BUILD_FILEVERSION}mym4_revision_dec"
1547 AC_SUBST(BUILD_FILEVERSION)
1548
1549 BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date`
1550 AC_SUBST(BUILD_TIMESTAMP)
1551 AC_DEFINE_UNQUOTED(BUILD_TIMESTAMP, "$BUILD_TIMESTAMP",
1552                    [The time this package was configured for a build])
1553
1554
1555 # And create the files.
1556 AC_CONFIG_FILES([
1557 Makefile
1558 m4/Makefile
1559 compat/Makefile
1560 mpi/Makefile
1561 cipher/Makefile
1562 random/Makefile
1563 doc/Makefile
1564 src/Makefile
1565 src/gcrypt.h
1566 src/libgcrypt-config
1567 src/versioninfo.rc
1568 tests/Makefile
1569 ])
1570 AC_OUTPUT
1571
1572
1573 detection_module="${GCRYPT_HWF_MODULES%.lo}"
1574 test -n "$detection_module" || detection_module="none"
1575
1576 # Give some feedback
1577 GCRY_MSG_SHOW([],[])
1578 GCRY_MSG_SHOW([Libgcrypt],[v${VERSION} has been configured as follows:])
1579 GCRY_MSG_SHOW([],[])
1580 GCRY_MSG_SHOW([Platform:                 ],[$PRINTABLE_OS_NAME ($host)])
1581 GCRY_MSG_SHOW([Hardware detection module:],[$detection_module])
1582 GCRY_MSG_WRAP([Enabled cipher algorithms:],[$enabled_ciphers])
1583 GCRY_MSG_WRAP([Enabled digest algorithms:],[$enabled_digests])
1584 GCRY_MSG_WRAP([Enabled kdf algorithms:   ],[$enabled_kdfs])
1585 GCRY_MSG_WRAP([Enabled pubkey algorithms:],[$enabled_pubkey_ciphers])
1586 GCRY_MSG_SHOW([Random number generator:  ],[$random])
1587 GCRY_MSG_SHOW([Using linux capabilities: ],[$use_capabilities])
1588 GCRY_MSG_SHOW([Try using Padlock crypto: ],[$padlocksupport])
1589 GCRY_MSG_SHOW([Try using AES-NI crypto:  ],[$aesnisupport])
1590 GCRY_MSG_SHOW([Try using DRNG (RDRAND):  ],[$drngsupport])
1591 GCRY_MSG_SHOW([Try using Intel AVX:      ],[$avxsupport])
1592 GCRY_MSG_SHOW([Try using Intel AVX2:     ],[$avx2support])
1593 GCRY_MSG_SHOW([],[])
1594
1595 if test "$print_egd_notice" = "yes"; then
1596 cat <<G10EOF
1597
1598    The performance of the Unix random gatherer module (rndunix) is not
1599    very good and it does not keep the entropy pool over multiple
1600    invocations of Libgcrypt base applications.  The suggested way to
1601    overcome this problem is to use the
1602
1603                  Entropy Gathering Daemon (EGD)
1604
1605    which provides a entropy source for the whole system.  It is written
1606    in Perl and available at the GnuPG FTP servers.  To enable EGD you
1607    should rerun configure with the option "--enable-static-rnd=egd".
1608    For more information consult the GnuPG webpages:
1609
1610              http://www.gnupg.org/download.html#egd
1611
1612 G10EOF
1613 fi
1614
1615 if test "$gcry_cv_gcc_attribute_aligned" != "yes" ; then
1616 cat <<G10EOF
1617
1618    Please not that your compiler does not support the GCC style
1619    aligned attribute. Using this software may evoke bus errors.
1620
1621 G10EOF
1622 fi
1623
1624 if test -n "$gpl"; then
1625   echo "Please note that you are building a version of Libgcrypt with"
1626   echo "  $gpl"
1627   echo "included.  These parts are licensed under the GPL and thus the"
1628   echo "use of this library has to comply with the conditions of the GPL."
1629 fi