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