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