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