Use configure test for aligned attribute.
[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],
37           m4_esyscmd([git rev-parse --short HEAD | tr -d '\n\r']))
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 # Check whether the compiler supports the GCC style aligned attribute
794 #
795 AC_CACHE_CHECK([whether the GCC style aligned attribute is supported],
796        [gcry_cv_gcc_attribute_aligned],
797        [gcry_cv_gcc_attribute_aligned=no
798         AC_COMPILE_IFELSE([AC_LANG_SOURCE(
799           [[struct { int a; } foo __attribute__ ((aligned (16)));]])],
800           [gcry_cv_gcc_attribute_aligned=yes])])
801 if test "$gcry_cv_gcc_attribute_aligned" = "yes" ; then
802    AC_DEFINE(HAVE_GCC_ATTRIBUTE_ALIGNED,1,
803      [Defined if a GCC style "__attribute__ ((aligned (n))" is supported])
804 fi
805
806
807 #######################################
808 #### Checks for library functions. ####
809 #######################################
810
811 AC_FUNC_VPRINTF
812 # We have replacements for these in src/missing-string.c
813 AC_CHECK_FUNCS(stpcpy strcasecmp)
814 # We have replacements for these in src/g10lib.h
815 AC_CHECK_FUNCS(strtoul memmove stricmp atexit raise)
816 # Other checks
817 AC_CHECK_FUNCS(strerror rand mmap getpagesize sysconf waitpid wait4)
818 AC_CHECK_FUNCS(gettimeofday getrusage gethrtime clock_gettime syslog)
819 AC_CHECK_FUNCS(fcntl ftruncate)
820
821 GNUPG_CHECK_MLOCK
822
823 #
824 # Replacement functions.
825 #
826 AC_REPLACE_FUNCS([getpid clock])
827
828
829 #
830 # Check wether it is necessary to link against libdl.
831 #
832 DL_LIBS=""
833 if test "$use_hmac_binary_check" = yes ; then
834   _gcry_save_libs="$LIBS"
835   LIBS=""
836   AC_SEARCH_LIBS(dlopen, c dl,,,)
837   DL_LIBS=$LIBS
838   LIBS="$_gcry_save_libs"
839   LIBGCRYPT_CONFIG_LIBS="${LIBGCRYPT_CONFIG_LIBS} ${DL_LIBS}"
840 fi
841 AC_SUBST(DL_LIBS)
842
843
844 #
845 # Check whether we can use Linux capabilities as requested.
846 #
847 if test "$use_capabilities" = "yes" ; then
848 use_capabilities=no
849 AC_CHECK_HEADERS(sys/capability.h)
850 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
851   AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
852   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
853      AC_DEFINE(USE_CAPABILITIES,1,
854                [define if capabilities should be used])
855      LIBS="$LIBS -lcap"
856      use_capabilities=yes
857   fi
858 fi
859 if test "$use_capabilities" = "no" ; then
860     AC_MSG_WARN([[
861 ***
862 *** The use of capabilities on this system is not possible.
863 *** You need a recent Linux kernel and some patches:
864 ***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
865 ***   fcap-module-990613.tar.gz     (kernel module)
866 ***   libcap-1.92.tar.gz            (user mode library and utilities)
867 *** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
868 *** set (filesystems menu). Be warned: This code is *really* ALPHA.
869 ***]])
870 fi
871 fi
872
873 # Check whether a random device is available.
874 if test "$try_dev_random" = yes ; then
875     AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
876     [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
877       ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
878     if test "$ac_cv_have_dev_random" = yes; then
879         AC_DEFINE(HAVE_DEV_RANDOM,1,
880                  [defined if the system supports a random device] )
881     fi
882 else
883     AC_MSG_CHECKING(for random device)
884     ac_cv_have_dev_random=no
885     AC_MSG_RESULT(has been disabled)
886 fi
887
888 # Figure out the random modules for this configuration.
889 if test "$random" = "default"; then
890
891     # Select default value.
892     if test "$ac_cv_have_dev_random" = yes; then
893         # Try Linuxish random device.
894         random_modules="linux"
895     else
896         case "${host}" in
897         *-*-mingw32ce*)
898           # WindowsCE random device.
899           random_modules="w32ce"
900           ;;
901         *-*-mingw32*|*-*-cygwin*)
902           # Windows random device.
903           random_modules="w32"
904           ;;
905         *)
906           # Build everything, allow to select at runtime.
907           random_modules="$auto_random_modules"
908           ;;
909         esac
910     fi
911 else
912     if test "$random" = "auto"; then
913         # Build everything, allow to select at runtime.
914         random_modules="$auto_random_modules"
915     else
916         random_modules="$random"
917     fi
918 fi
919
920
921 #
922 # Setup assembler stuff.
923 #
924 GNUPG_SYS_SYMBOL_UNDERSCORE()
925 AC_ARG_ENABLE(mpi-path,
926               AC_HELP_STRING([--enable-mpi-path=EXTRA_PATH],
927               [prepend EXTRA_PATH to list of CPU specific optimizations]),
928               mpi_extra_path="$enableval",mpi_extra_path="")
929 AC_MSG_CHECKING(for mpi assembler functions)
930 if test -f $srcdir/mpi/config.links ; then
931     . $srcdir/mpi/config.links
932     AC_CONFIG_LINKS("$mpi_ln_list")
933     ac_cv_mpi_sflags="$mpi_sflags"
934     AC_MSG_RESULT(done)
935 else
936     AC_MSG_RESULT(failed)
937     AC_MSG_ERROR([mpi/config.links missing!])
938 fi
939 MPI_SFLAGS="$ac_cv_mpi_sflags"
940 AC_SUBST(MPI_SFLAGS)
941
942 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_ADD1, test "$mpi_mod_asm_mpih_add1" = yes)
943 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_SUB1, test "$mpi_mod_asm_mpih_sub1" = yes)
944 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL1, test "$mpi_mod_asm_mpih_mul1" = yes)
945 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL2, test "$mpi_mod_asm_mpih_mul2" = yes)
946 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL3, test "$mpi_mod_asm_mpih_mul3" = yes)
947 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_LSHIFT, test "$mpi_mod_asm_mpih_lshift" = yes)
948 AM_CONDITIONAL(MPI_MOD_ASM_MPIH_RSHIFT, test "$mpi_mod_asm_mpih_rshift" = yes)
949 AM_CONDITIONAL(MPI_MOD_ASM_UDIV, test "$mpi_mod_asm_udiv" = yes)
950 AM_CONDITIONAL(MPI_MOD_ASM_UDIV_QRNND, test "$mpi_mod_asm_udiv_qrnnd" = yes)
951 AM_CONDITIONAL(MPI_MOD_C_MPIH_ADD1, test "$mpi_mod_c_mpih_add1" = yes)
952 AM_CONDITIONAL(MPI_MOD_C_MPIH_SUB1, test "$mpi_mod_c_mpih_sub1" = yes)
953 AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL1, test "$mpi_mod_c_mpih_mul1" = yes)
954 AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL2, test "$mpi_mod_c_mpih_mul2" = yes)
955 AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL3, test "$mpi_mod_c_mpih_mul3" = yes)
956 AM_CONDITIONAL(MPI_MOD_C_MPIH_LSHIFT, test "$mpi_mod_c_mpih_lshift" = yes)
957 AM_CONDITIONAL(MPI_MOD_C_MPIH_RSHIFT, test "$mpi_mod_c_mpih_rshift" = yes)
958 AM_CONDITIONAL(MPI_MOD_C_UDIV, test "$mpi_mod_c_udiv" = yes)
959 AM_CONDITIONAL(MPI_MOD_C_UDIV_QRNND, test "$mpi_mod_c_udiv_qrnnd" = yes)
960
961 if test mym4_isgit = "yes"; then
962     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
963               [Defined if this is not a regular release])
964 fi
965
966
967 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
968
969
970 # This is handy for debugging so the compiler doesn't rearrange
971 # things and eliminate variables.
972 AC_ARG_ENABLE(optimization,
973        AC_HELP_STRING([--disable-optimization],
974                       [disable compiler optimization]),
975                       [if test $enableval = no ; then
976                          CFLAGS=`echo $CFLAGS | sed 's/-O[[0-9]]//'`
977                        fi])
978
979 # CFLAGS mangling when using gcc.
980 if test "$GCC" = yes; then
981     CFLAGS="$CFLAGS -Wall"
982     if test "$USE_MAINTAINER_MODE" = "yes"; then
983         CFLAGS="$CFLAGS -Wcast-align -Wshadow -Wstrict-prototypes"
984         CFLAGS="$CFLAGS -Wformat -Wno-format-y2k -Wformat-security"
985
986         # If -Wno-missing-field-initializers is supported we can enable a
987         # a bunch of really useful warnings.
988         AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers])
989         _gcc_cflags_save=$CFLAGS
990         CFLAGS="-Wno-missing-field-initializers"
991         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no)
992         AC_MSG_RESULT($_gcc_wopt)
993         CFLAGS=$_gcc_cflags_save;
994         if test x"$_gcc_wopt" = xyes ; then
995           CFLAGS="$CFLAGS -W -Wextra -Wbad-function-cast"
996           CFLAGS="$CFLAGS -Wwrite-strings"
997           CFLAGS="$CFLAGS -Wdeclaration-after-statement"
998           CFLAGS="$CFLAGS -Wno-missing-field-initializers"
999           CFLAGS="$CFLAGS -Wno-sign-compare"
1000         fi
1001
1002         AC_MSG_CHECKING([if gcc supports -Wpointer-arith])
1003         _gcc_cflags_save=$CFLAGS
1004         CFLAGS="-Wpointer-arith"
1005         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no)
1006         AC_MSG_RESULT($_gcc_wopt)
1007         CFLAGS=$_gcc_cflags_save;
1008         if test x"$_gcc_wopt" = xyes ; then
1009           CFLAGS="$CFLAGS -Wpointer-arith"
1010         fi
1011     fi
1012
1013 fi
1014
1015 # Check whether as(1) supports a noeexecstack feature.  This test
1016 # includes an override option.
1017 CL_AS_NOEXECSTACK
1018
1019
1020 AC_SUBST(LIBGCRYPT_CONFIG_API_VERSION)
1021 AC_SUBST(LIBGCRYPT_CONFIG_LIBS)
1022 AC_SUBST(LIBGCRYPT_CONFIG_CFLAGS)
1023 AC_SUBST(LIBGCRYPT_CONFIG_HOST)
1024 AC_SUBST(LIBGCRYPT_THREAD_MODULES)
1025
1026 AC_CONFIG_COMMANDS([gcrypt-conf],[[
1027 chmod +x src/libgcrypt-config
1028 ]],[[
1029 prefix=$prefix
1030 exec_prefix=$exec_prefix
1031 libdir=$libdir
1032 datadir=$datadir
1033 DATADIRNAME=$DATADIRNAME
1034 ]])
1035
1036 #####################
1037 #### Conclusion. ####
1038 #####################
1039
1040 # Define conditional sources and config.h symbols depending on the
1041 # selected ciphers, pubkey-ciphers, digests and random modules.
1042
1043 LIST_MEMBER(arcfour, $enabled_ciphers)
1044 if test "$found" = "1"; then
1045    GCRYPT_CIPHERS="$GCRYPT_CIPHERS arcfour.lo"
1046    AC_DEFINE(USE_ARCFOUR, 1, [Defined if this module should be included])
1047 fi
1048
1049 LIST_MEMBER(blowfish, $enabled_ciphers)
1050 if test "$found" = "1" ; then
1051    GCRYPT_CIPHERS="$GCRYPT_CIPHERS blowfish.lo"
1052    AC_DEFINE(USE_BLOWFISH, 1, [Defined if this module should be included])
1053 fi
1054
1055 LIST_MEMBER(cast5, $enabled_ciphers)
1056 if test "$found" = "1" ; then
1057    GCRYPT_CIPHERS="$GCRYPT_CIPHERS cast5.lo"
1058    AC_DEFINE(USE_CAST5, 1, [Defined if this module should be included])
1059 fi
1060
1061 LIST_MEMBER(des, $enabled_ciphers)
1062 if test "$found" = "1" ; then
1063    GCRYPT_CIPHERS="$GCRYPT_CIPHERS des.lo"
1064    AC_DEFINE(USE_DES, 1, [Defined if this module should be included])
1065 fi
1066
1067 LIST_MEMBER(aes, $enabled_ciphers)
1068 if test "$found" = "1" ; then
1069    GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael.lo"
1070    AC_DEFINE(USE_AES, 1, [Defined if this module should be included])
1071 fi
1072
1073 LIST_MEMBER(twofish, $enabled_ciphers)
1074 if test "$found" = "1" ; then
1075    GCRYPT_CIPHERS="$GCRYPT_CIPHERS twofish.lo"
1076    AC_DEFINE(USE_TWOFISH, 1, [Defined if this module should be included])
1077 fi
1078
1079 LIST_MEMBER(serpent, $enabled_ciphers)
1080 if test "$found" = "1" ; then
1081    GCRYPT_CIPHERS="$GCRYPT_CIPHERS serpent.lo"
1082    AC_DEFINE(USE_SERPENT, 1, [Defined if this module should be included])
1083 fi
1084
1085 LIST_MEMBER(rfc2268, $enabled_ciphers)
1086 if test "$found" = "1" ; then
1087    GCRYPT_CIPHERS="$GCRYPT_CIPHERS rfc2268.lo"
1088    AC_DEFINE(USE_RFC2268, 1, [Defined if this module should be included])
1089 fi
1090
1091 LIST_MEMBER(seed, $enabled_ciphers)
1092 if test "$found" = "1" ; then
1093    GCRYPT_CIPHERS="$GCRYPT_CIPHERS seed.lo"
1094    AC_DEFINE(USE_SEED, 1, [Defined if this module should be included])
1095 fi
1096
1097 LIST_MEMBER(camellia, $enabled_ciphers)
1098 if test "$found" = "1" ; then
1099    GCRYPT_CIPHERS="$GCRYPT_CIPHERS camellia.lo camellia-glue.lo"
1100    AC_DEFINE(USE_CAMELLIA, 1, [Defined if this module should be included])
1101 fi
1102
1103 LIST_MEMBER(idea, $enabled_ciphers)
1104 if test "$found" = "1" ; then
1105    GCRYPT_CIPHERS="$GCRYPT_CIPHERS idea.lo"
1106    AC_DEFINE(USE_IDEA, 1, [Defined if this module should be included])
1107 fi
1108
1109 LIST_MEMBER(dsa, $enabled_pubkey_ciphers)
1110 if test "$found" = "1" ; then
1111    GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS dsa.lo"
1112    AC_DEFINE(USE_DSA, 1, [Defined if this module should be included])
1113 fi
1114
1115 LIST_MEMBER(rsa, $enabled_pubkey_ciphers)
1116 if test "$found" = "1" ; then
1117    GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS rsa.lo"
1118    AC_DEFINE(USE_RSA, 1, [Defined if this module should be included])
1119 fi
1120
1121 LIST_MEMBER(elgamal, $enabled_pubkey_ciphers)
1122 if test "$found" = "1" ; then
1123    GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS elgamal.lo"
1124    AC_DEFINE(USE_ELGAMAL, 1, [Defined if this module should be included])
1125 fi
1126
1127 LIST_MEMBER(ecc, $enabled_pubkey_ciphers)
1128 if test "$found" = "1" ; then
1129    GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS ecc.lo"
1130    AC_DEFINE(USE_ECC, 1, [Defined if this module should be included])
1131 fi
1132
1133 LIST_MEMBER(crc, $enabled_digests)
1134 if test "$found" = "1" ; then
1135    GCRYPT_DIGESTS="$GCRYPT_DIGESTS crc.lo"
1136    AC_DEFINE(USE_CRC, 1, [Defined if this module should be included])
1137 fi
1138
1139 LIST_MEMBER(md4, $enabled_digests)
1140 if test "$found" = "1" ; then
1141    GCRYPT_DIGESTS="$GCRYPT_DIGESTS md4.lo"
1142    AC_DEFINE(USE_MD4, 1, [Defined if this module should be included])
1143 fi
1144
1145 LIST_MEMBER(md5, $enabled_digests)
1146 if test "$found" = "1" ; then
1147    GCRYPT_DIGESTS="$GCRYPT_DIGESTS md5.lo"
1148    AC_DEFINE(USE_MD5, 1, [Defined if this module should be included])
1149 fi
1150
1151 LIST_MEMBER(sha256, $enabled_digests)
1152 if test "$found" = "1" ; then
1153    GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha256.lo"
1154    AC_DEFINE(USE_SHA256, 1, [Defined if this module should be included])
1155 fi
1156
1157 LIST_MEMBER(sha512, $enabled_digests)
1158 if test "$found" = "1" ; then
1159    GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha512.lo"
1160    AC_DEFINE(USE_SHA512, 1, [Defined if this module should be included])
1161 fi
1162
1163 LIST_MEMBER(tiger, $enabled_digests)
1164 if test "$found" = "1" ; then
1165    GCRYPT_DIGESTS="$GCRYPT_DIGESTS tiger.lo"
1166    AC_DEFINE(USE_TIGER, 1, [Defined if this module should be included])
1167 fi
1168
1169 LIST_MEMBER(whirlpool, $enabled_digests)
1170 if test "$found" = "1" ; then
1171    GCRYPT_DIGESTS="$GCRYPT_DIGESTS whirlpool.lo"
1172    AC_DEFINE(USE_WHIRLPOOL, 1, [Defined if this module should be included])
1173 fi
1174
1175 # rmd160 and sha1 should be included always.
1176 GCRYPT_DIGESTS="$GCRYPT_DIGESTS rmd160.lo sha1.lo"
1177 AC_DEFINE(USE_RMD160, 1, [Defined if this module should be included])
1178 AC_DEFINE(USE_SHA1, 1,   [Defined if this module should be included])
1179
1180 LIST_MEMBER(linux, $random_modules)
1181 if test "$found" = "1" ; then
1182    GCRYPT_RANDOM="$GCRYPT_RANDOM rndlinux.lo"
1183    AC_DEFINE(USE_RNDLINUX, 1, [Defined if the /dev/random RNG should be used.])
1184 fi
1185
1186 LIST_MEMBER(unix, $random_modules)
1187 if test "$found" = "1" ; then
1188    GCRYPT_RANDOM="$GCRYPT_RANDOM rndunix.lo"
1189    AC_DEFINE(USE_RNDUNIX, 1, [Defined if the default Unix RNG should be used.])
1190    print_egd_notice=yes
1191 fi
1192
1193 LIST_MEMBER(egd, $random_modules)
1194 if test "$found" = "1" ; then
1195    GCRYPT_RANDOM="$GCRYPT_RANDOM rndegd.lo"
1196    AC_DEFINE(USE_RNDEGD, 1, [Defined if the EGD based RNG should be used.])
1197 fi
1198
1199 LIST_MEMBER(w32, $random_modules)
1200 if test "$found" = "1" ; then
1201    GCRYPT_RANDOM="$GCRYPT_RANDOM rndw32.lo"
1202    AC_DEFINE(USE_RNDW32, 1,
1203              [Defined if the Windows specific RNG should be used.])
1204 fi
1205
1206 LIST_MEMBER(w32ce, $random_modules)
1207 if test "$found" = "1" ; then
1208    GCRYPT_RANDOM="$GCRYPT_RANDOM rndw32ce.lo"
1209    AC_DEFINE(USE_RNDW32CE, 1,
1210              [Defined if the WindowsCE specific RNG should be used.])
1211 fi
1212
1213 AC_SUBST([GCRYPT_CIPHERS])
1214 AC_SUBST([GCRYPT_PUBKEY_CIPHERS])
1215 AC_SUBST([GCRYPT_DIGESTS])
1216 AC_SUBST([GCRYPT_RANDOM])
1217
1218 AC_SUBST(LIBGCRYPT_CIPHERS, $enabled_ciphers)
1219 AC_SUBST(LIBGCRYPT_PUBKEY_CIPHERS, $enabled_pubkey_ciphers)
1220 AC_SUBST(LIBGCRYPT_DIGESTS, $enabled_digests)
1221
1222 # For printing the configuration we need a colon separated list of
1223 # algorithm names.
1224 tmp=`echo "$enabled_ciphers" | tr ' ' : `
1225 AC_DEFINE_UNQUOTED(LIBGCRYPT_CIPHERS, "$tmp",
1226                    [List of available cipher algorithms])
1227 tmp=`echo "$enabled_pubkey_ciphers" | tr ' ' : `
1228 AC_DEFINE_UNQUOTED(LIBGCRYPT_PUBKEY_CIPHERS, "$tmp",
1229                    [List of available public key cipher algorithms])
1230 tmp=`echo "$enabled_digests" | tr ' ' : `
1231 AC_DEFINE_UNQUOTED(LIBGCRYPT_DIGESTS, "$tmp",
1232                    [List of available digest algorithms])
1233
1234
1235
1236 # Generate extended version information for W32.
1237 if test "$have_w32_system" = yes; then
1238    BUILD_TIMESTAMP=`date --iso-8601=minutes`
1239    changequote(,)dnl
1240    BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./;s/\./,/g'`
1241    changequote([,])dnl
1242    BUILD_FILEVERSION="${BUILD_FILEVERSION}mym4_revision_dec"
1243 fi
1244 BUILD_REVISION="mym4_revision"
1245 AC_SUBST(BUILD_REVISION)
1246 AC_SUBST(BUILD_TIMESTAMP)
1247 AC_SUBST(BUILD_FILEVERSION)
1248 AC_DEFINE_UNQUOTED(BUILD_REVISION, "$BUILD_REVISION",
1249                    [GIT commit id revision used to build this package])
1250
1251
1252
1253 # And create the files.
1254 AC_CONFIG_FILES([
1255 Makefile
1256 m4/Makefile
1257 compat/Makefile
1258 mpi/Makefile
1259 cipher/Makefile
1260 random/Makefile
1261 doc/Makefile
1262 src/Makefile
1263 src/gcrypt.h
1264 src/libgcrypt-config
1265 src/versioninfo.rc
1266 tests/Makefile
1267 ])
1268 AC_OUTPUT
1269
1270 # Give some feedback
1271 echo "
1272         Libgcrypt v${VERSION} has been configured as follows:
1273
1274         Platform:                  $PRINTABLE_OS_NAME ($host)
1275         Enabled cipher algorithms: $enabled_ciphers
1276         Enabled digest algorithms: $enabled_digests
1277         Enabled pubkey algorithms: $enabled_pubkey_ciphers
1278         Random number generator:   $random
1279         Using linux capabilities:  $use_capabilities
1280         Try using Padlock crypto:  $padlocksupport
1281         Try using AES-NI crypto:   $aesnisupport
1282 "
1283
1284 if test "$print_egd_notice" = "yes"; then
1285 cat <<G10EOF
1286
1287    The performance of the Unix random gatherer module (rndunix) is not
1288    very good and it does not keep the entropy pool over multiple
1289    invocations of Libgcrypt base applications.  The suggested way to
1290    overcome this problem is to use the
1291
1292                  Entropy Gathering Daemon (EGD)
1293
1294    which provides a entropy source for the whole system.  It is written
1295    in Perl and available at the GnuPG FTP servers.  To enable EGD you
1296    should rerun configure with the option "--enable-static-rnd=egd".
1297    For more information consult the GnuPG webpages:
1298
1299              http://www.gnupg.org/download.html#egd
1300
1301 G10EOF
1302 fi
1303
1304 if test "$gcry_cv_gcc_attribute_aligned" != "yes" ; then
1305 cat <<G10EOF
1306
1307    Please not that your compiler does not support the GCC style
1308    aligned attribute. Using this software may evoke bus errors.
1309
1310 G10EOF
1311 fi
1312
1313 if test -n "$gpl"; then
1314   echo "Please note that you are building a version of Libgcrypt with"
1315   echo "  $gpl"
1316   echo "included.  These parts are licensed under the GPL and thus the"
1317   echo "use of this library has to comply with the conditions of the GPL."
1318 fi