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