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