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