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