e416ceb88cbd03bec22c077c2422281876bb645f
[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"
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 # Solaris needs -lsocket and -lnsl. Unisys system includes
646 # gethostbyname in libsocket but needs libnsl for socket.
647 AC_SEARCH_LIBS(setsockopt, [socket], ,
648         [AC_SEARCH_LIBS(setsockopt, [socket], , , [-lnsl])])
649 AC_SEARCH_LIBS(setsockopt, [nsl])
650
651 ##################################
652 #### Checks for header files. ####
653 ##################################
654
655 AC_HEADER_STDC
656 AC_CHECK_HEADERS(unistd.h sys/select.h sys/msg.h)
657 INSERT_SYS_SELECT_H=
658 if test x"$ac_cv_header_sys_select_h" = xyes; then
659   INSERT_SYS_SELECT_H=" include <sys/select.h>"
660 fi
661 AC_SUBST(INSERT_SYS_SELECT_H)
662
663
664 ##########################################
665 #### Checks for typedefs, structures, ####
666 ####  and compiler characteristics.   ####
667 ##########################################
668
669 AC_C_CONST
670 AC_C_INLINE
671 AC_TYPE_SIZE_T
672 AC_TYPE_SIGNAL
673 AC_DECL_SYS_SIGLIST
674 AC_TYPE_PID_T
675
676 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
677 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
678 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
679 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
680 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
681
682 gl_TYPE_SOCKLEN_T
683 case "${host}" in
684   *-*-mingw32*)
685     # socklen_t may or may not be defined depending on what headers
686     # are included.  To be safe we use int as this is the actual type.
687     FALLBACK_SOCKLEN_T="typedef int gcry_socklen_t;"
688     ;;
689   *)
690     if test ".$gl_cv_socklen_t_equiv" = "."; then
691       FALLBACK_SOCKLEN_T="typedef socklen_t gcry_socklen_t;"
692     else
693       FALLBACK_SOCKLEN_T="typedef ${gl_cv_socklen_t_equiv} gcry_socklen_t;"
694     fi
695 esac
696 AC_SUBST(FALLBACK_SOCKLEN_T)
697
698 #
699 # Check for ELF visibility support.
700 #
701 AC_CACHE_CHECK(whether the visibility attribute is supported,
702        gcry_cv_visibility_attribute,
703        [gcry_cv_visibility_attribute=no
704         AC_LANG_CONFTEST([AC_LANG_SOURCE(
705           [[int foo __attribute__ ((visibility ("hidden"))) = 1;
706             int bar __attribute__ ((visibility ("protected"))) = 1;
707           ]])])
708
709         if ${CC-cc} -Werror -S conftest.c -o conftest.s \
710                   1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
711             if grep '\.hidden.*foo' conftest.s >/dev/null 2>&1 ; then
712                 if grep '\.protected.*bar' conftest.s >/dev/null 2>&1; then
713                     gcry_cv_visibility_attribute=yes
714                 fi
715             fi
716         fi
717        ])
718 if test "$gcry_cv_visibility_attribute" = "yes"; then
719     AC_CACHE_CHECK(for broken visibility attribute,
720        gcry_cv_broken_visibility_attribute,
721        [gcry_cv_broken_visibility_attribute=yes
722         AC_LANG_CONFTEST([AC_LANG_SOURCE(
723           [[int foo (int x);
724             int bar (int x) __asm__ ("foo")
725                             __attribute__ ((visibility ("hidden")));
726             int bar (int x) { return x; }
727           ]])])
728
729         if ${CC-cc} -Werror -S conftest.c -o conftest.s \
730                   1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
731            if grep '\.hidden@<:@        _@:>@foo' conftest.s >/dev/null 2>&1;
732             then
733                gcry_cv_broken_visibility_attribute=no
734            fi
735         fi
736        ])
737 fi
738 if test "$gcry_cv_visibility_attribute" = "yes"; then
739     AC_CACHE_CHECK(for broken alias attribute,
740        gcry_cv_broken_alias_attribute,
741        [gcry_cv_broken_alias_attribute=yes
742         AC_LANG_CONFTEST([AC_LANG_SOURCE(
743           [[extern int foo (int x) __asm ("xyzzy");
744             int bar (int x) { return x; }
745             extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
746             extern int dfoo;
747             extern __typeof (dfoo) dfoo __asm ("abccb");
748             int dfoo = 1;
749           ]])])
750
751         if ${CC-cc} -Werror -S conftest.c -o conftest.s \
752                   1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
753            if grep 'xyzzy' conftest.s >/dev/null 2>&1 && \
754               grep 'abccb' conftest.s >/dev/null 2>&1; then
755               gcry_cv_broken_alias_attribute=no
756            fi
757         fi
758         ])
759 fi
760 if test "$gcry_cv_visibility_attribute" = "yes"; then
761     AC_CACHE_CHECK(if gcc supports -fvisibility=hidden,
762        gcry_cv_gcc_has_f_visibility,
763        [gcry_cv_gcc_has_f_visibility=no
764         _gcc_cflags_save=$CFLAGS
765         CFLAGS="-fvisibility=hidden"
766         AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),
767                           gcry_cv_gcc_has_f_visibility=yes)
768         CFLAGS=$_gcc_cflags_save;
769        ])
770 fi
771 if test "$gcry_cv_visibility_attribute" = "yes" \
772    && test "$gcry_cv_broken_visibility_attribute" != "yes" \
773    && test "$gcry_cv_broken_alias_attribute" != "yes" \
774    && test "$gcry_cv_gcc_has_f_visibility" = "yes"
775  then
776    AC_DEFINE(GCRY_USE_VISIBILITY, 1,
777                [Define to use the GNU C visibility attribute.])
778    CFLAGS="$CFLAGS -fvisibility=hidden"
779 fi
780
781
782 #######################################
783 #### Checks for library functions. ####
784 #######################################
785
786 AC_FUNC_VPRINTF
787 # We have replacements for these in src/missing-string.c
788 AC_CHECK_FUNCS(stpcpy strcasecmp)
789 # We have replacements for these in src/g10lib.h
790 AC_CHECK_FUNCS(strtoul memmove stricmp atexit raise)
791 # Other checks
792 AC_CHECK_FUNCS(strerror rand mmap getpagesize sysconf waitpid wait4)
793 AC_CHECK_FUNCS(gettimeofday getrusage gethrtime clock_gettime syslog)
794 AC_CHECK_FUNCS(fcntl ftruncate)
795
796 GNUPG_CHECK_MLOCK
797
798 #
799 # Replacement functions.
800 #
801 AC_REPLACE_FUNCS([getpid clock])
802
803
804 #
805 # Check wether it is necessary to link against libdl.
806 #
807 DL_LIBS=""
808 if test "$use_hmac_binary_check" = yes ; then
809   _gcry_save_libs="$LIBS"
810   LIBS=""
811   AC_SEARCH_LIBS(dlopen, c dl,,,)
812   DL_LIBS=$LIBS
813   LIBS="$_gcry_save_libs"
814   LIBGCRYPT_CONFIG_LIBS="${LIBGCRYPT_CONFIG_LIBS} ${DL_LIBS}"
815 fi
816 AC_SUBST(DL_LIBS)
817
818
819 #
820 # Check whether we can use Linux capabilities as requested.
821 #
822 if test "$use_capabilities" = "yes" ; then
823 use_capabilities=no
824 AC_CHECK_HEADERS(sys/capability.h)
825 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
826   AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
827   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
828      AC_DEFINE(USE_CAPABILITIES,1,
829                [define if capabilities should be used])
830      LIBS="$LIBS -lcap"
831      use_capabilities=yes
832   fi
833 fi
834 if test "$use_capabilities" = "no" ; then
835     AC_MSG_WARN([[
836 ***
837 *** The use of capabilities on this system is not possible.
838 *** You need a recent Linux kernel and some patches:
839 ***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
840 ***   fcap-module-990613.tar.gz     (kernel module)
841 ***   libcap-1.92.tar.gz            (user mode library and utilities)
842 *** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
843 *** set (filesystems menu). Be warned: This code is *really* ALPHA.
844 ***]])
845 fi
846 fi
847
848 # Check whether a random device is available.
849 if test "$try_dev_random" = yes ; then
850     AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
851     [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
852       ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
853     if test "$ac_cv_have_dev_random" = yes; then
854         AC_DEFINE(HAVE_DEV_RANDOM,1,
855                  [defined if the system supports a random device] )
856     fi
857 else
858     AC_MSG_CHECKING(for random device)
859     ac_cv_have_dev_random=no
860     AC_MSG_RESULT(has been disabled)
861 fi
862
863 # Figure out the random modules for this configuration.
864 if test "$random" = "default"; then
865
866     # Select default value.
867     if test "$ac_cv_have_dev_random" = yes; then
868         # Try Linuxish random device.
869         random_modules="linux"
870     else
871         case "${host}" in
872         *-*-mingw32ce*)
873           # WindowsCE random device.
874           random_modules="w32ce"
875           ;;
876         *-*-mingw32*|*-*-cygwin*)
877           # Windows random device.
878           random_modules="w32"
879           ;;
880         *)
881           # Build everything, allow to select at runtime.
882           random_modules="$auto_random_modules"
883           ;;
884         esac
885     fi
886 else
887     if test "$random" = "auto"; then
888         # Build everything, allow to select at runtime.
889         random_modules="$auto_random_modules"
890     else
891         random_modules="$random"
892     fi
893 fi
894
895
896 #
897 # Setup assembler stuff.
898 #
899 GNUPG_SYS_SYMBOL_UNDERSCORE()
900 AC_ARG_ENABLE(mpi-path,
901               AC_HELP_STRING([--enable-mpi-path=EXTRA_PATH],
902               [prepend EXTRA_PATH to list of CPU specific optimizations]),
903               mpi_extra_path="$enableval",mpi_extra_path="")
904 AC_MSG_CHECKING(for mpi assembler functions)
905 if test -f $srcdir/mpi/config.links ; then
906     . $srcdir/mpi/config.links
907     AC_CONFIG_LINKS("$mpi_ln_list")
908     ac_cv_mpi_sflags="$mpi_sflags"
909     AC_MSG_RESULT(done)
910 else
911     AC_MSG_RESULT(failed)
912     AC_MSG_ERROR([mpi/config.links missing!])
913 fi
914 MPI_SFLAGS="$ac_cv_mpi_sflags"
915 AC_SUBST(MPI_SFLAGS)
916
917 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_ADD1, test "$mpi_mod_asm_mpih_add1" = yes)
918 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_SUB1, test "$mpi_mod_asm_mpih_sub1" = yes)
919 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL1, test "$mpi_mod_asm_mpih_mul1" = yes)
920 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL2, test "$mpi_mod_asm_mpih_mul2" = yes)
921 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL3, test "$mpi_mod_asm_mpih_mul3" = yes)
922 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_LSHIFT, test "$mpi_mod_asm_mpih_lshift" = yes)
923 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_RSHIFT, test "$mpi_mod_asm_mpih_rshift" = yes)
924 AM_CONDITIONAL(MPI_MOD_ASM_UDIV, test "$mpi_mod_asm_udiv" = yes)
925 AM_CONDITIONAL(MPI_MOD_ASM_UDIV_QRNND, test "$mpi_mod_asm_udiv_qrnnd" = yes)
926 AM_CONDITIONAL(MPI_MOD_C_MPIH_ADD1, test "$mpi_mod_c_mpih_add1" = yes)
927 AM_CONDITIONAL(MPI_MOD_C_MPIH_SUB1, test "$mpi_mod_c_mpih_sub1" = yes)
928 AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL1, test "$mpi_mod_c_mpih_mul1" = yes)
929 AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL2, test "$mpi_mod_c_mpih_mul2" = yes)
930 AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL3, test "$mpi_mod_c_mpih_mul3" = yes)
931 AM_CONDITIONAL(MPI_MOD_C_MPIH_LSHIFT, test "$mpi_mod_c_mpih_lshift" = yes)
932 AM_CONDITIONAL(MPI_MOD_C_MPIH_RSHIFT, test "$mpi_mod_c_mpih_rshift" = yes)
933 AM_CONDITIONAL(MPI_MOD_C_UDIV, test "$mpi_mod_c_udiv" = yes)
934 AM_CONDITIONAL(MPI_MOD_C_UDIV_QRNND, test "$mpi_mod_c_udiv_qrnnd" = yes)
935
936 if test "$is_development_version" = "yes"; then
937     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
938               [Defined if this is not a regular release])
939 fi
940
941
942 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
943
944
945 # This is handy for debugging so the compiler doesn't rearrange
946 # things and eliminate variables.
947 AC_ARG_ENABLE(optimization,
948        AC_HELP_STRING([--disable-optimization],
949                       [disable compiler optimization]),
950                       [if test $enableval = no ; then
951                          CFLAGS=`echo $CFLAGS | sed 's/-O[[0-9]]//'`
952                        fi])
953
954 # CFLAGS mangling when using gcc.
955 if test "$GCC" = yes; then
956     CFLAGS="$CFLAGS -Wall"
957     if test "$USE_MAINTAINER_MODE" = "yes"; then
958         CFLAGS="$CFLAGS -Wcast-align -Wshadow -Wstrict-prototypes"
959         CFLAGS="$CFLAGS -Wformat -Wno-format-y2k -Wformat-security"
960
961         # If -Wno-missing-field-initializers is supported we can enable a
962         # a bunch of really useful warnings.
963         AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers])
964         _gcc_cflags_save=$CFLAGS
965         CFLAGS="-Wno-missing-field-initializers"
966         AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_wopt=yes,_gcc_wopt=no)
967         AC_MSG_RESULT($_gcc_wopt)
968         CFLAGS=$_gcc_cflags_save;
969         if test x"$_gcc_wopt" = xyes ; then
970           CFLAGS="$CFLAGS -W -Wextra -Wbad-function-cast"
971           CFLAGS="$CFLAGS -Wwrite-strings"
972           CFLAGS="$CFLAGS -Wdeclaration-after-statement"
973           CFLAGS="$CFLAGS -Wno-missing-field-initializers"
974           CFLAGS="$CFLAGS -Wno-sign-compare"
975         fi
976
977         AC_MSG_CHECKING([if gcc supports -Wpointer-arith])
978         _gcc_cflags_save=$CFLAGS
979         CFLAGS="-Wpointer-arith"
980         AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_wopt=yes,_gcc_wopt=no)
981         AC_MSG_RESULT($_gcc_wopt)
982         CFLAGS=$_gcc_cflags_save;
983         if test x"$_gcc_wopt" = xyes ; then
984           CFLAGS="$CFLAGS -Wpointer-arith"
985         fi
986     fi
987
988 fi
989
990 # Check whether as(1) supports a noeexecstack feature.  This test
991 # includes an override option.
992 CL_AS_NOEXECSTACK
993
994
995 AC_SUBST(LIBGCRYPT_CONFIG_API_VERSION)
996 AC_SUBST(LIBGCRYPT_CONFIG_LIBS)
997 AC_SUBST(LIBGCRYPT_CONFIG_CFLAGS)
998 AC_SUBST(LIBGCRYPT_CONFIG_HOST)
999 AC_SUBST(LIBGCRYPT_THREAD_MODULES)
1000
1001 AC_CONFIG_COMMANDS([gcrypt-conf],[[
1002 chmod +x src/libgcrypt-config
1003 ]],[[
1004 prefix=$prefix
1005 exec_prefix=$exec_prefix
1006 libdir=$libdir
1007 datadir=$datadir
1008 DATADIRNAME=$DATADIRNAME
1009 ]])
1010
1011 #####################
1012 #### Conclusion. ####
1013 #####################
1014
1015 # Define conditional sources and config.h symbols depending on the
1016 # selected ciphers, pubkey-ciphers, digests and random modules.
1017
1018 LIST_MEMBER(arcfour, $enabled_ciphers)
1019 if test "$found" = "1"; then
1020    GCRYPT_CIPHERS="$GCRYPT_CIPHERS arcfour.lo"
1021    AC_DEFINE(USE_ARCFOUR, 1, [Defined if this module should be included])
1022 fi
1023
1024 LIST_MEMBER(blowfish, $enabled_ciphers)
1025 if test "$found" = "1" ; then
1026    GCRYPT_CIPHERS="$GCRYPT_CIPHERS blowfish.lo"
1027    AC_DEFINE(USE_BLOWFISH, 1, [Defined if this module should be included])
1028 fi
1029
1030 LIST_MEMBER(cast5, $enabled_ciphers)
1031 if test "$found" = "1" ; then
1032    GCRYPT_CIPHERS="$GCRYPT_CIPHERS cast5.lo"
1033    AC_DEFINE(USE_CAST5, 1, [Defined if this module should be included])
1034 fi
1035
1036 LIST_MEMBER(des, $enabled_ciphers)
1037 if test "$found" = "1" ; then
1038    GCRYPT_CIPHERS="$GCRYPT_CIPHERS des.lo"
1039    AC_DEFINE(USE_DES, 1, [Defined if this module should be included])
1040 fi
1041
1042 LIST_MEMBER(aes, $enabled_ciphers)
1043 if test "$found" = "1" ; then
1044    GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael.lo"
1045    AC_DEFINE(USE_AES, 1, [Defined if this module should be included])
1046 fi
1047
1048 LIST_MEMBER(twofish, $enabled_ciphers)
1049 if test "$found" = "1" ; then
1050    GCRYPT_CIPHERS="$GCRYPT_CIPHERS twofish.lo"
1051    AC_DEFINE(USE_TWOFISH, 1, [Defined if this module should be included])
1052 fi
1053
1054 LIST_MEMBER(serpent, $enabled_ciphers)
1055 if test "$found" = "1" ; then
1056    GCRYPT_CIPHERS="$GCRYPT_CIPHERS serpent.lo"
1057    AC_DEFINE(USE_SERPENT, 1, [Defined if this module should be included])
1058 fi
1059
1060 LIST_MEMBER(rfc2268, $enabled_ciphers)
1061 if test "$found" = "1" ; then
1062    GCRYPT_CIPHERS="$GCRYPT_CIPHERS rfc2268.lo"
1063    AC_DEFINE(USE_RFC2268, 1, [Defined if this module should be included])
1064 fi
1065
1066 LIST_MEMBER(seed, $enabled_ciphers)
1067 if test "$found" = "1" ; then
1068    GCRYPT_CIPHERS="$GCRYPT_CIPHERS seed.lo"
1069    AC_DEFINE(USE_SEED, 1, [Defined if this module should be included])
1070 fi
1071
1072 LIST_MEMBER(camellia, $enabled_ciphers)
1073 if test "$found" = "1" ; then
1074    GCRYPT_CIPHERS="$GCRYPT_CIPHERS camellia.lo camellia-glue.lo"
1075    AC_DEFINE(USE_CAMELLIA, 1, [Defined if this module should be included])
1076 fi
1077
1078 LIST_MEMBER(dsa, $enabled_pubkey_ciphers)
1079 if test "$found" = "1" ; then
1080    GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS dsa.lo"
1081    AC_DEFINE(USE_DSA, 1, [Defined if this module should be included])
1082 fi
1083
1084 LIST_MEMBER(rsa, $enabled_pubkey_ciphers)
1085 if test "$found" = "1" ; then
1086    GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS rsa.lo"
1087    AC_DEFINE(USE_RSA, 1, [Defined if this module should be included])
1088 fi
1089
1090 LIST_MEMBER(elgamal, $enabled_pubkey_ciphers)
1091 if test "$found" = "1" ; then
1092    GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS elgamal.lo"
1093    AC_DEFINE(USE_ELGAMAL, 1, [Defined if this module should be included])
1094 fi
1095
1096 LIST_MEMBER(ecc, $enabled_pubkey_ciphers)
1097 if test "$found" = "1" ; then
1098    GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS ecc.lo"
1099    AC_DEFINE(USE_ECC, 1, [Defined if this module should be included])
1100 fi
1101
1102 LIST_MEMBER(crc, $enabled_digests)
1103 if test "$found" = "1" ; then
1104    GCRYPT_DIGESTS="$GCRYPT_DIGESTS crc.lo"
1105    AC_DEFINE(USE_CRC, 1, [Defined if this module should be included])
1106 fi
1107
1108 LIST_MEMBER(md4, $enabled_digests)
1109 if test "$found" = "1" ; then
1110    GCRYPT_DIGESTS="$GCRYPT_DIGESTS md4.lo"
1111    AC_DEFINE(USE_MD4, 1, [Defined if this module should be included])
1112 fi
1113
1114 LIST_MEMBER(md5, $enabled_digests)
1115 if test "$found" = "1" ; then
1116    GCRYPT_DIGESTS="$GCRYPT_DIGESTS md5.lo"
1117    AC_DEFINE(USE_MD5, 1, [Defined if this module should be included])
1118 fi
1119
1120 LIST_MEMBER(sha256, $enabled_digests)
1121 if test "$found" = "1" ; then
1122    GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha256.lo"
1123    AC_DEFINE(USE_SHA256, 1, [Defined if this module should be included])
1124 fi
1125
1126 LIST_MEMBER(sha512, $enabled_digests)
1127 if test "$found" = "1" ; then
1128    GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha512.lo"
1129    AC_DEFINE(USE_SHA512, 1, [Defined if this module should be included])
1130 fi
1131
1132 LIST_MEMBER(tiger, $enabled_digests)
1133 if test "$found" = "1" ; then
1134    GCRYPT_DIGESTS="$GCRYPT_DIGESTS tiger.lo"
1135    AC_DEFINE(USE_TIGER, 1, [Defined if this module should be included])
1136 fi
1137
1138 LIST_MEMBER(whirlpool, $enabled_digests)
1139 if test "$found" = "1" ; then
1140    GCRYPT_DIGESTS="$GCRYPT_DIGESTS whirlpool.lo"
1141    AC_DEFINE(USE_WHIRLPOOL, 1, [Defined if this module should be included])
1142 fi
1143
1144 # rmd160 and sha1 should be included always.
1145 GCRYPT_DIGESTS="$GCRYPT_DIGESTS rmd160.lo sha1.lo"
1146 AC_DEFINE(USE_RMD160, 1, [Defined if this module should be included])
1147 AC_DEFINE(USE_SHA1, 1,   [Defined if this module should be included])
1148
1149 LIST_MEMBER(linux, $random_modules)
1150 if test "$found" = "1" ; then
1151    GCRYPT_RANDOM="$GCRYPT_RANDOM rndlinux.lo"
1152    AC_DEFINE(USE_RNDLINUX, 1, [Defined if the /dev/random RNG should be used.])
1153 fi
1154
1155 LIST_MEMBER(unix, $random_modules)
1156 if test "$found" = "1" ; then
1157    GCRYPT_RANDOM="$GCRYPT_RANDOM rndunix.lo"
1158    AC_DEFINE(USE_RNDUNIX, 1, [Defined if the default Unix RNG should be used.])
1159    print_egd_notice=yes
1160 fi
1161
1162 LIST_MEMBER(egd, $random_modules)
1163 if test "$found" = "1" ; then
1164    GCRYPT_RANDOM="$GCRYPT_RANDOM rndegd.lo"
1165    AC_DEFINE(USE_RNDEGD, 1, [Defined if the EGD based RNG should be used.])
1166 fi
1167
1168 LIST_MEMBER(w32, $random_modules)
1169 if test "$found" = "1" ; then
1170    GCRYPT_RANDOM="$GCRYPT_RANDOM rndw32.lo"
1171    AC_DEFINE(USE_RNDW32, 1,
1172              [Defined if the Windows specific RNG should be used.])
1173 fi
1174
1175 LIST_MEMBER(w32ce, $random_modules)
1176 if test "$found" = "1" ; then
1177    GCRYPT_RANDOM="$GCRYPT_RANDOM rndw32ce.lo"
1178    AC_DEFINE(USE_RNDW32CE, 1,
1179              [Defined if the WindowsCE specific RNG should be used.])
1180 fi
1181
1182 AC_SUBST([GCRYPT_CIPHERS])
1183 AC_SUBST([GCRYPT_PUBKEY_CIPHERS])
1184 AC_SUBST([GCRYPT_DIGESTS])
1185 AC_SUBST([GCRYPT_RANDOM])
1186
1187 AC_SUBST(LIBGCRYPT_CIPHERS, $enabled_ciphers)
1188 AC_SUBST(LIBGCRYPT_PUBKEY_CIPHERS, $enabled_pubkey_ciphers)
1189 AC_SUBST(LIBGCRYPT_DIGESTS, $enabled_digests)
1190
1191 # For printing the configuration we need a colon separated list of
1192 # algorithm names.
1193 tmp=`echo "$enabled_ciphers" | tr ' ' : `
1194 AC_DEFINE_UNQUOTED(LIBGCRYPT_CIPHERS, "$tmp",
1195                    [List of available cipher algorithms])
1196 tmp=`echo "$enabled_pubkey_ciphers" | tr ' ' : `
1197 AC_DEFINE_UNQUOTED(LIBGCRYPT_PUBKEY_CIPHERS, "$tmp",
1198                    [List of available public key cipher algorithms])
1199 tmp=`echo "$enabled_digests" | tr ' ' : `
1200 AC_DEFINE_UNQUOTED(LIBGCRYPT_DIGESTS, "$tmp",
1201                    [List of available digest algorithms])
1202
1203
1204
1205 # Generate extended version information for W32.
1206 if test "$have_w32_system" = yes; then
1207    BUILD_TIMESTAMP=`date --iso-8601=minutes`
1208    changequote(,)dnl
1209    BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./;s/\./,/g'`
1210    changequote([,])dnl
1211    BUILD_FILEVERSION="${BUILD_FILEVERSION}${BUILD_REVISION}"
1212 fi
1213 AC_SUBST(BUILD_REVISION)
1214 AC_SUBST(BUILD_TIMESTAMP)
1215 AC_SUBST(BUILD_FILEVERSION)
1216 AC_DEFINE_UNQUOTED(BUILD_REVISION, "$BUILD_REVISION",
1217                    [Subversion revision used to build this package])
1218
1219
1220
1221 # And create the files.
1222 AC_CONFIG_FILES([
1223 Makefile
1224 m4/Makefile
1225 compat/Makefile
1226 mpi/Makefile
1227 cipher/Makefile
1228 random/Makefile
1229 doc/Makefile
1230 src/Makefile
1231 src/gcrypt.h
1232 src/libgcrypt-config
1233 src/versioninfo.rc
1234 tests/Makefile
1235 ])
1236 AC_OUTPUT
1237
1238 # Give some feedback
1239 echo "
1240         Libgcrypt v${VERSION} has been configured as follows:
1241
1242         Platform:                  $PRINTABLE_OS_NAME ($host)
1243         Enabled cipher algorithms: $enabled_ciphers
1244         Enabled digest algorithms: $enabled_digests
1245         Enabled pubkey algorithms: $enabled_pubkey_ciphers
1246         Random number generator:   $random
1247         Using linux capabilities:  $use_capabilities
1248         Try using Padlock crypto:  $padlocksupport
1249         Try using AES-NI crypto:   $aesnisupport
1250 "
1251
1252 if test "$print_egd_notice" = "yes"; then
1253 cat <<G10EOF
1254
1255    The performance of the Unix random gatherer module (rndunix) is not
1256    very good and it does not keep the entropy pool over multiple
1257    invocations of Libgcrypt base applications.  The suggested way to
1258    overcome this problem is to use the
1259
1260                  Entropy Gathering Daemon (EGD)
1261
1262    which provides a entropy source for the whole system.  It is written
1263    in Perl and available at the GnuPG FTP servers.  To enable EGD you
1264    should rerun configure with the option "--enable-static-rnd=egd".
1265    For more information consult the GnuPG webpages:
1266
1267              http://www.gnupg.org/download.html#egd
1268
1269 G10EOF
1270 fi
1271
1272 if test -n "$gpl"; then
1273   echo "Please note that you are building a version of Libgcrypt with"
1274   echo "  $gpl"
1275   echo "included.  These parts are licensed under the GPL and thus the"
1276   echo "use of this library has to comply with the conditions of the GPL."
1277 fi