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