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