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