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