* md.c (gcry_md_hash_buffer): Convert ERR to gpg_error_t in
[libgcrypt.git] / configure.ac
1 # Configure.ac script for Libgcrypt
2 # Copyright (C) 1998, 1999, 2000, 2001,
3 #               2002, 2003 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, write to the Free Software
19 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
20 #
21 # (Process this file with autoconf to produce a configure script.)
22 AC_REVISION($Revision$)
23 AC_PREREQ(2.52)
24
25 # Version number: Remember to change it immediately *after* a release
26 # but remove a "-cvs" prefix right *before* a release and append it
27 # soon later.
28
29 AC_INIT(libgcrypt, 1.1.42-cvs, bug-libgcrypt@gnupg.org)
30
31 # LT Version numbers, remember to change them just *before* a release.
32 #   (Interfaces removed:    CURRENT++, AGE=0, REVISION=0)
33 #   (Interfaces added:      CURRENT++, AGE++, REVISION=0)
34 #   (No interfaces changed:                   REVISION++)
35 LIBGCRYPT_LT_CURRENT=6
36 LIBGCRYPT_LT_AGE=5
37 LIBGCRYPT_LT_REVISION=1
38
39 PACKAGE=$PACKAGE_NAME
40 VERSION=$PACKAGE_VERSION
41
42 AC_CONFIG_SRCDIR([src/gcrypt.h])
43 AC_CONFIG_AUX_DIR(scripts)
44 AC_CANONICAL_TARGET()
45 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
46 AM_CONFIG_HEADER(config.h)
47 AM_MAINTAINER_MODE
48
49 AH_TOP([
50 /* need this, because some autoconf tests rely on this (e.g. stpcpy)
51  * and it should be used for new programs  */
52 #define _GNU_SOURCE  1
53 ])
54
55 AH_BOTTOM([
56 #include "gcrypt-defs.h"
57 #define _GCRYPT_IN_LIBGCRYPT 1
58 ])
59
60 AH_VERBATIM([_REENTRANT],
61 [/* To allow the use of Libgcrypt in multithreaded programs we have to use
62     special features from the library. */
63 #ifndef _REENTRANT
64 # define _REENTRANT 1
65 #endif
66 ])
67
68 AC_SUBST(LIBGCRYPT_LT_CURRENT)
69 AC_SUBST(LIBGCRYPT_LT_AGE)
70 AC_SUBST(LIBGCRYPT_LT_REVISION)
71 AC_SUBST(PACKAGE)
72 AC_SUBST(VERSION)
73 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
74 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
75
76 ##########################
77 ## General definitions. ##
78 ##########################
79
80 # Used by libgcrypt-config
81 LIBGCRYPT_CONFIG_LIBS="-lgcrypt"
82 LIBGCRYPT_CONFIG_CFLAGS=""
83
84 # Definitions for symmetric ciphers.
85 available_ciphers="arcfour blowfish cast5 des aes twofish"
86 enabled_ciphers=""
87
88 # Definitions for public-key ciphers.
89 available_pubkey_ciphers="dsa elgamal rsa"
90 enabled_pubkey_ciphers=""
91
92 # Definitions for message digests.
93 available_digests="crc md4 md5 rmd160 sha1 sha256"
94 available_digests_64="sha512 tiger"
95 enabled_digests=""
96
97 # Definitions for random modules.
98 available_random_modules="linux egd unix"
99 auto_random_modules="$available_random_modules"
100
101 # Other definitions.
102 print_egd_notice=no
103
104 # Setup some stuff depending on host/target.
105 case "${target}" in
106     *-*-mingw32*)
107       available_random_modules="w32"
108       ac_cv_have_dev_random=no
109       AC_DEFINE(USE_ONLY_8DOT3,1,
110                 [set this to limit filenames to the 8.3 format])
111       AC_DEFINE(HAVE_DRIVE_LETTERS,1,
112                 [defined if we must run on a stupid file system])
113       AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
114                 [defined if we run on some of the PCDOS like systems 
115                  (DOS, Windoze. OS/2) with special properties like
116                   no file modes])
117       ;;
118
119     i?86-emx-os2 | i?86-*-os2*emx)
120         # OS/2 with the EMX environment
121         ac_cv_have_dev_random=no
122         AC_DEFINE(HAVE_DRIVE_LETTERS)
123         AC_DEFINE(HAVE_DOSISH_SYSTEM)
124         ;;
125
126     i?86-*-msdosdjgpp*)
127         # DOS with the DJGPP environment
128         ac_cv_have_dev_random=no
129         AC_DEFINE(HAVE_DRIVE_LETTERS)
130         AC_DEFINE(HAVE_DOSISH_SYSTEM)
131         ;;
132
133     *-*-freebsd*)
134        # FreeBSD
135        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
136        LDFLAGS="$LDFLAGS -L/usr/local/lib"
137        ;;
138
139     *-*-hpux*)
140         if test -z "$GCC" ; then
141             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
142         fi
143         ;;
144     *-dec-osf4*)
145         if test -z "$GCC" ; then
146             # Suppress all warnings
147             # to get rid of the unsigned/signed char mismatch warnings.
148             CFLAGS="$CFLAGS -w"
149         fi
150         ;;
151     m68k-atari-mint)
152         ;;
153     *)
154       ;;
155 esac
156
157 # For now we hardcode the use of version scripts.  It would be better
158 # to write a text for this or even implement this within libtool
159 have_ld_version_script=no
160 case "${target}" in
161     *-*-mingw32*)
162         PRINTABLE_OS_NAME="MingW32"
163         ;;
164
165     i?86-emx-os2 | i?86-*-os2*emx )
166         PRINTABLE_OS_NAME="OS/2"
167         ;;
168
169     i?86-*-msdosdjgpp*)
170         PRINTABLE_OS_NAME="MSDOS/DJGPP"
171         ;;
172
173     *-linux*)
174         PRINTABLE_OS_NAME="GNU/Linux"
175         have_ld_version_script=yes
176         ;;
177
178 # let that after linux to avoid gnu-linux problems
179     *-gnu*)
180         PRINTABLE_OS_NAME="GNU/Hurd"
181         have_ld_version_script=yes
182         ;;
183
184     *)
185         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
186         ;;
187 esac
188
189 case "${target}" in
190     *-openbsd* | *-netbsd*)
191         # FIXME: Are these the best flags for OpenBSD?
192         NAME_OF_DEV_RANDOM="/dev/srandom"
193         NAME_OF_DEV_URANDOM="/dev/urandom"
194 #       DYNLINK_MOD_CFLAGS="-shared -rdynamic $CFLAGS_PIC -Wl,-Bshareable -Wl,-x"
195         ;;
196
197     *-solaris* | *-irix* | *-dec-osf* )
198         NAME_OF_DEV_RANDOM="/dev/random"
199         NAME_OF_DEV_URANDOM="/dev/random"
200 #       DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC"
201         ;;
202
203     *)
204         NAME_OF_DEV_RANDOM="/dev/random"
205         NAME_OF_DEV_URANDOM="/dev/urandom"
206         # -shared is a gcc-ism.  Find pic flags from GNUPG_CHECK_PIC.
207 #        if test -n "$GCC" ; then
208 #           DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC"                            
209 #        else
210 #           DYNLINK_MOD_CFLAGS="$CFLAGS_PIC"
211 #        fi
212         ;;
213 esac
214
215
216 AC_C_BIGENDIAN
217
218 AC_CHECK_SIZEOF(unsigned short, 2)
219 AC_CHECK_SIZEOF(unsigned int, 4)
220 AC_CHECK_SIZEOF(unsigned long, 4)
221 AC_CHECK_SIZEOF(unsigned long long, 0)
222
223 if test "$ac_cv_sizeof_unsigned_short" = "0" \
224    || test "$ac_cv_sizeof_unsigned_int" = "0" \
225    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
226     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
227 fi
228
229 # Do we have any 64-bit data types?
230 if test "$ac_cv_sizeof_unsigned_int" != "8" \
231    && test "$ac_cv_sizeof_unsigned_long" != "8" \
232    && test "$ac_cv_sizeof_unsigned_long_long" != "8" \
233    && test "$ac_cv_sizeof_uint64_t" != "8"; then
234     AC_MSG_WARN([No 64-bit types.  Disabling TIGER/192, SHA-384, and SHA-512])
235 else
236   available_digests="$available_digests $available_digests_64"
237 fi
238
239 # If not specified otherwise, all available algorithms will be
240 # included.
241 default_ciphers="$available_ciphers"
242 default_pubkey_ciphers="$available_pubkey_ciphers"
243 default_digests="$available_digests"
244
245 ############################
246 ## Command line switches. ##
247 ############################
248
249 # Implementation of the --enable-ciphers switch.
250 AC_ARG_ENABLE(ciphers,
251               AC_HELP_STRING([--enable-ciphers=ciphers],
252                              [select the symmetric ciphers to include]),
253               [enabled_ciphers=$(echo $enableval | tr , ' ' | tr '[A-Z]' '[a-z]')],
254               [enabled_ciphers=""])
255 if test "x$enabled_ciphers" = "x" \
256    -o "$enabled_ciphers" = "yes"  \
257    -o "$enabled_ciphers" = "no"; then
258    enabled_ciphers=$default_ciphers
259 fi
260 AC_MSG_CHECKING([which symmetric ciphers to include])
261 for cipher in $enabled_ciphers; do
262     LIST_MEMBER($cipher, $available_ciphers)
263     if test "$found" = "0"; then
264        AC_MSG_ERROR([unsupported cipher specified])
265     fi
266 done
267 AC_MSG_RESULT([$enabled_ciphers])
268
269 # Implementation of the --enable-pubkey-ciphers switch.
270 AC_ARG_ENABLE(pubkey-ciphers,
271               AC_HELP_STRING([--enable-pubkey-ciphers=ciphers],
272                              [select the public-key ciphers to include]),
273               [enabled_pubkey_ciphers=$(echo $enableval | tr , ' ' | tr '[A-Z]' '[a-z]')],
274               [enabled_pubkey_ciphers=""])
275 if test "x$enabled_pubkey_ciphers" = "x" \
276    -o "$enabled_pubkey_ciphers" = "yes"  \
277    -o "$enabled_pubkey_ciphers" = "no"; then
278    enabled_pubkey_ciphers=$default_pubkey_ciphers
279 fi
280 AC_MSG_CHECKING([which public-key ciphers to include])
281 for cipher in $enabled_pubkey_ciphers; do
282     LIST_MEMBER($cipher, $available_pubkey_ciphers)
283     if test "$found" = "0"; then
284        AC_MSG_ERROR([unsupported public-key cipher specified])
285     fi
286 done
287 AC_MSG_RESULT([$enabled_pubkey_ciphers])
288
289 # Implementation of the --enable-digests switch.
290 AC_ARG_ENABLE(digests,
291               AC_HELP_STRING([--enable-digests=digests],
292                              [select the message digests to include]),
293               [enabled_digests=$(echo $enableval | tr , ' ' | tr '[A-Z]' '[a-z]')],
294               [enabled_digests=""])
295 if test "x$enabled_digests" = "x" \
296    -o "$enabled_digests" = "yes"  \
297    -o "$enabled_digests" = "no"; then
298    enabled_digests=$default_digests
299 fi
300 AC_MSG_CHECKING([which message digests to include])
301 for digest in $enabled_digests; do
302     LIST_MEMBER($digest, $available_digests)
303     if test "$found" = "0"; then
304        AC_MSG_ERROR([unsupported message digest specified])
305     fi
306 done
307 AC_MSG_RESULT([$enabled_digests])
308
309 # Implementation of the --enable-random switch.
310 AC_ARG_ENABLE(random,
311               AC_HELP_STRING([--enable-random=name],
312                              [select which random number generator to use]),
313               [random=$(echo $enableval | tr '[A-Z]' '[a-z]')],
314               [])
315 if test "x$random" = "x" -o "$random" = "yes" -o "$random" = "no"; then
316     random=default
317 fi
318 AC_MSG_CHECKING([which random module to use])
319 if test "$random" != "default" -a "$random" != "auto"; then
320     LIST_MEMBER($random, $available_random_modules)
321     if test "$found" = "0"; then
322        AC_MSG_ERROR([unsupported random module specified])
323     fi
324 fi
325 AC_MSG_RESULT($random)
326
327 # Implementation of the --disable-dev-random switch.
328 AC_MSG_CHECKING([whether use of /dev/random is requested])
329 AC_ARG_ENABLE(dev-random,
330 [  --disable-dev-random    disable the use of dev random],
331     try_dev_random=$enableval, try_dev_random=yes)
332 AC_MSG_RESULT($try_dev_random)
333
334 # Implementation of the --with-egd-socket switch.
335 AC_ARG_WITH(egd-socket,
336     [  --with-egd-socket=NAME  Use NAME for the EGD socket)],
337             egd_socket_name="$withval", egd_socket_name="" )
338 AC_DEFINE_UNQUOTED(EGD_SOCKET_NAME, "$egd_socket_name",
339                    [Define if you don't want the default EGD socket name.
340                     For details see cipher/rndegd.c])
341
342 # Implementation of --disable-asm.
343 AC_MSG_CHECKING([whether assembler modules are requested])
344 AC_ARG_ENABLE([asm],
345               AC_HELP_STRING([--disable-asm],
346                              [Disable assembler modules]),
347               [try_asm_modules=$enableval],
348               [try_asm_modules=yes])
349 AC_MSG_RESULT($try_asm_modules)
350
351 # Implementation of the --enable-m-guard switch.
352 AC_MSG_CHECKING([whether memory guard is requested])
353 AC_ARG_ENABLE(m-guard,
354     [  --enable-m-guard        enable memory guard facility],
355     use_m_guard=$enableval, use_m_guard=no)
356     AC_MSG_RESULT($use_m_guard)
357 if test "$use_m_guard" = yes ; then
358     AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
359 fi
360
361 # Implementation of the --with-capabilities switch.
362 # Check whether we want to use Linux capabilities
363 AC_MSG_CHECKING([whether use of capabilities is requested])
364 AC_ARG_WITH(capabilities,
365     [  --with-capabilities     use linux capabilities [default=no]],
366 [use_capabilities="$withval"],[use_capabilities=no])
367 AC_MSG_RESULT($use_capabilities)
368
369 ##############################
370 #### Checks for programs. ####
371 ##############################
372
373 AC_PROG_MAKE_SET
374 missing_dir=`cd $ac_aux_dir && pwd`
375 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
376 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
377 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
378 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
379 # AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
380 AC_PROG_CC
381 AC_PROG_CPP
382 AM_PROG_AS
383 AC_ISC_POSIX
384 AC_PROG_INSTALL
385 AC_PROG_AWK
386
387 AM_PROG_LIBTOOL
388
389 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
390                    [A human readable text with the name of the OS])
391 AC_ARG_ENABLE([ld-version-script],
392               AC_HELP_STRING([--enable-ld-version-script],
393                              [enable/disable use of linker version script.
394                               (default is system dependent)]),
395               [have_ld_version_script=$enableval],
396               [ : ] )
397 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
398
399 AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM",
400                    [defined to the name of the strong random device])
401 AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM",
402                    [defined to the name of the weaker random device])
403
404 ###############################
405 #### Checks for libraries. ####
406 ###############################
407
408 AM_PATH_GPG_ERROR(0.1)
409 AC_DEFINE(GPG_ERR_SOURCE_DEFAULT, GPG_ERR_SOURCE_GCRYPT,
410           [The default error source for libgcrypt.])
411
412 # Solaris needs -lsocket and -lnsl. Unisys system includes
413 # gethostbyname in libsocket but needs libnsl for socket.
414 AC_CHECK_LIB(nsl, gethostbyname)
415 AC_CHECK_LIB(socket, socket, ac_need_libsocket=1, ac_try_nsl=1)
416 if test x$ac_need_libsocket = x1; then
417     LIBS="$LIBS -lsocket"
418 fi
419 if test x$ac_try_nsl = x1; then
420     AC_CHECK_LIB(nsl, gethostbyname, ac_need_libnsl=1)
421     if test x$ac_need_libnsl = x1
422     then
423         LIBS="$LIBS -lnsl"
424     fi
425 fi
426
427 ##################################
428 #### Checks for header files. ####
429 ##################################
430
431 AC_HEADER_STDC
432 AC_CHECK_HEADERS(unistd.h sys/select.h)
433
434 ##########################################
435 #### Checks for typedefs, structures, ####
436 ####  and compiler characteristics.   ####
437 ##########################################
438
439 AC_C_CONST
440 AC_C_INLINE
441 AC_TYPE_SIZE_T
442 AC_TYPE_SIGNAL
443 AC_DECL_SYS_SIGLIST
444
445 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
446 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
447 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
448 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
449 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
450
451 #######################################
452 #### Checks for library functions. ####
453 #######################################
454
455 AC_FUNC_VPRINTF
456 # We have replacements for these in src/missing-string.c
457 AC_CHECK_FUNCS(stpcpy strcasecmp)
458 # We have replacements for these in src/g10lib.h
459 AC_CHECK_FUNCS(strtoul memmove stricmp atexit raise)
460 # Other checks
461 AC_CHECK_FUNCS(strerror rand mmap getpagesize waitpid wait4)
462 AC_CHECK_FUNCS(gettimeofday getrusage gethrtime clock_gettime)
463
464 GNUPG_CHECK_MLOCK
465
466 # The ATH systems needs to know whether pth or pthreads are available.
467 have_pth=no
468 have_pthread=no
469 AC_CHECK_LIB(pth,pth_version,have_pth=yes)
470 if test "$have_pth" = yes; then
471   AC_DEFINE(HAVE_PTH, ,[Define if we have Pth.])
472 fi
473 AC_CHECK_LIB(pthread,pthread_create,have_pthread=yes)
474 if test "$have_pthread" != yes; then
475   AC_CHECK_LIB(c,pthread_create,have_pthread=yes)
476 fi
477 if test "$have_pthread" = yes; then
478   AC_DEFINE(HAVE_PTHREAD, ,[Define if we have pthread.])
479 fi
480 AM_CONDITIONAL(HAVE_PTH, test "$have_pth" = "yes")
481 AM_CONDITIONAL(HAVE_PTHREAD, test "$have_pthread" = "yes")
482
483 # Check whether we can use Linux capabilities as requested.
484 if test "$use_capabilities" = "yes" ; then
485 use_capabilities=no
486 AC_CHECK_HEADERS(sys/capability.h)
487 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
488   AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
489   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
490      AC_DEFINE(USE_CAPABILITIES,1,
491                [define if capabilities should be used])
492      LIBS="$LIBS -lcap"
493      use_capabilities=yes
494   fi
495 fi
496 if test "$use_capabilities" = "no" ; then
497     AC_MSG_WARN([[
498 ***
499 *** The use of capabilities on this system is not possible.
500 *** You need a recent Linux kernel and some patches:
501 ***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
502 ***   fcap-module-990613.tar.gz     (kernel module)
503 ***   libcap-1.92.tar.gz            (user mode library and utilities)
504 *** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
505 *** set (filesystems menu). Be warned: This code is *really* ALPHA.
506 ***]])
507 fi
508 fi
509
510 # Check whether a random device is available.
511 if test "$try_dev_random" = yes ; then
512     AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
513     [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
514       ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
515     if test "$ac_cv_have_dev_random" = yes; then
516         AC_DEFINE(HAVE_DEV_RANDOM,1,
517                  [defined if the system supports a random device] )
518     fi
519 else
520     AC_MSG_CHECKING(for random device)
521     ac_cv_have_dev_random=no
522     AC_MSG_RESULT(has been disabled)
523 fi
524
525 # Figure out the random modules for this configuration.
526 if test "$random" = "default"; then
527
528     # Select default value.
529     if test "$ac_cv_have_dev_random" = yes; then
530         # Try Linuxish random device.
531         random_modules="linux"
532     else
533         case "${target}" in
534         *-*-mingw32*|*-*-cygwin*)
535           # Windows random device.
536           random_modules="w32"
537           ;;
538         *)
539           # Build everything, allow to select at runtime.
540           random_modules="$auto_random_modules"
541           ;;
542         esac    
543     fi
544 else
545     if test "$random" = "auto"; then
546         # Build everything, allow to select at runtime.
547         random_modules="$auto_random_modules"
548     fi
549 fi
550
551 AC_MSG_RESULT()
552
553 # Setup assembler stuff.
554 AC_MSG_CHECKING(for mpi assembler functions)
555 if test -f $srcdir/mpi/config.links ; then
556     . $srcdir/mpi/config.links
557     AC_CONFIG_LINKS("$mpi_ln_list")
558     ac_cv_mpi_mod_list="$mpi_mod_list"
559     ac_cv_mpi_sflags="$mpi_sflags"
560     ac_cv_mpi_config_done="yes"
561     AC_MSG_RESULT(done)
562 else
563     AC_MSG_RESULT(failed)
564     AC_MSG_ERROR([mpi/config.links missing!])
565 fi
566 MPI_MOD_LIST_LO=""
567 MPI_MOD_LIST_O=""
568 if test "$ac_cv_mpi_mod_list" != ""; then
569   for i in $ac_cv_mpi_mod_list; do
570       MPI_MOD_LIST_LO="$MPI_MOD_LIST_LO $i.lo"
571       MPI_MOD_LIST_O="$MPI_MOD_LIST_O $i.o"
572   done
573 fi
574 AC_SUBST(MPI_MOD_LIST_LO)
575 AC_SUBST(MPI_MOD_LIST_O)
576 MPI_SFLAGS="$ac_cv_mpi_sflags"
577 AC_SUBST(MPI_SFLAGS)
578
579 # Allow users to append something to the version string without
580 # flagging it as development version.  The user version part is
581 # considered everything after a dash.
582 changequote(,)#
583 tmp_pat='[a-zA-Z]'
584 changequote([,])#
585 if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
586     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
587               [Defined if this is not a regular release])
588 fi
589
590 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
591
592 GNUPG_CHECK_GNUMAKE
593
594 if test "$GCC" = yes; then
595     if test "$MAINTAINER_MODE" = "yes"; then
596         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
597     else
598         CFLAGS="$CFLAGS -Wall"
599     fi
600 fi
601
602 #
603 # Make the version number in src/gcrypt.h the same as the one here.
604 # (this is easier than to have a *.in file just for one substitution)
605 #
606 GNUPG_FIX_HDR_VERSION([src/gcrypt.h], GCRYPT_VERSION)
607
608 AC_SUBST(LIBGCRYPT_CONFIG_LIBS)
609 AC_SUBST(LIBGCRYPT_CONFIG_CFLAGS)
610
611 AC_CONFIG_COMMANDS([gcrypt-defs],[[
612 chmod +x src/libgcrypt-config
613 cat >gcrypt-defs.tmp <<G10EOF
614 /* Generated automatically by configure */
615 #ifdef HAVE_DRIVE_LETTERS
616   #define GNUPG_LOCALEDIR "c:/lib/gnupg/locale"
617   #define GNUPG_LIBDIR  "c:/lib/gnupg"
618   #define GNUPG_DATADIR "c:/lib/gnupg"
619   #define GNUPG_HOMEDIR "c:/gnupg-test"
620 #else
621   #define GNUPG_LOCALEDIR "${prefix}/${DATADIRNAME}/locale"
622   #define GNUPG_LIBDIR  "${libdir}/gnupg"
623   #define GNUPG_DATADIR "${datadir}/gnupg"
624   #ifdef __VMS
625     #define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
626   #else
627     #define GNUPG_HOMEDIR "~/.gnupg-test" 
628   #endif
629 #endif
630 G10EOF
631 if cmp -s gcrypt-defs.h gcrypt-defs.tmp 2>/dev/null; then
632     echo "gcrypt-defs.h is unchanged"
633     rm -f gcrypt-defs.tmp
634 else
635     rm -f gcrypt-defs.h
636     mv gcrypt-defs.tmp gcrypt-defs.h
637     echo "gcrypt-defs.h created"
638 fi
639 ]],[[
640 prefix=$prefix
641 exec_prefix=$exec_prefix
642 libdir=$libdir
643 datadir=$datadir
644 DATADIRNAME=$DATADIRNAME
645 ]])
646
647 #####################
648 #### Conclusion. ####
649 #####################
650
651 # Define conditional sources and config.h symbols depending on the
652 # selected ciphers, pubkey-ciphers, digests and random modules.
653
654 LIST_MEMBER(arcfour, $enabled_ciphers)
655 test "$found" = "1" && GCRYPT_CIPHERS="$GCRYPT_CIPHERS arcfour.lo"
656 AC_DEFINE_UNQUOTED(USE_ARCFOUR, $found, [Defined if this module should be included])
657 LIST_MEMBER(blowfish, $enabled_ciphers)
658 test "$found" = "1" && GCRYPT_CIPHERS="$GCRYPT_CIPHERS blowfish.lo"
659 AC_DEFINE_UNQUOTED(USE_BLOWFISH, $found, [Defined if this module should be included])
660 LIST_MEMBER(cast5, $enabled_ciphers)
661 test "$found" = "1" && GCRYPT_CIPHERS="$GCRYPT_CIPHERS cast5.lo"
662 AC_DEFINE_UNQUOTED(USE_CAST5, $found, [Defined if this module should be included])
663 LIST_MEMBER(des, $enabled_ciphers)
664 test "$found" = "1" && GCRYPT_CIPHERS="$GCRYPT_CIPHERS des.lo"
665 AC_DEFINE_UNQUOTED(USE_DES, $found, [Defined if this module should be included])
666 LIST_MEMBER(aes, $enabled_ciphers)
667 test "$found" = "1" && GCRYPT_CIPHERS="$GCRYPT_CIPHERS rijndael.lo"
668 AC_DEFINE_UNQUOTED(USE_AES, $found, [Defined if this module should be included])
669 LIST_MEMBER(twofish, $enabled_ciphers)
670 test "$found" = "1" && GCRYPT_CIPHERS="$GCRYPT_CIPHERS twofish.lo"
671 AC_DEFINE_UNQUOTED(USE_TWOFISH, $found, [Defined if this module should be included])
672 LIST_MEMBER(serpent, $enabled_ciphers)
673 test "$found" = "1" && GCRYPT_CIPHERS="$GCRYPT_CIPHERS serpent.lo"
674 AC_DEFINE_UNQUOTED(USE_SERPENT, $found, [Defined if this module should be included])
675
676 LIST_MEMBER(dsa, $enabled_pubkey_ciphers)
677 test "$found" = "1" && GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS dsa.lo"
678 AC_DEFINE_UNQUOTED(USE_DSA, $found, [Defined if this module should be included])
679 LIST_MEMBER(rsa, $enabled_pubkey_ciphers)
680 test "$found" = "1" && GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS rsa.lo"
681 AC_DEFINE_UNQUOTED(USE_RSA, $found, [Defined if this module should be included])
682 LIST_MEMBER(elgamal, $enabled_pubkey_ciphers)
683 test "$found" = "1" && GCRYPT_PUBKEY_CIPHERS="$GCRYPT_PUBKEY_CIPHERS elgamal.lo"
684 AC_DEFINE_UNQUOTED(USE_ELGAMAL, $found, [Defined if this module should be included])
685
686 LIST_MEMBER(crc, $enabled_digests)
687 test "$found" = "1" && GCRYPT_DIGESTS="$GCRYPT_DIGESTS crc.lo"
688 AC_DEFINE_UNQUOTED(USE_CRC, $found, [Defined if this module should be included])
689 LIST_MEMBER(md4, $enabled_digests)
690 test "$found" = "1" && GCRYPT_DIGESTS="$GCRYPT_DIGESTS md4.lo"
691 AC_DEFINE_UNQUOTED(USE_MD4, $found, [Defined if this module should be included])
692 LIST_MEMBER(md5, $enabled_digests)
693 test "$found" = "1" && GCRYPT_DIGESTS="$GCRYPT_DIGESTS md5.lo"
694 AC_DEFINE_UNQUOTED(USE_MD5, $found, [Defined if this module should be included])
695 LIST_MEMBER(sha1, $enabled_digests)
696 test "$found" = "1" && GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha1.lo"
697 AC_DEFINE_UNQUOTED(USE_SHA1, $found, [Defined if this module should be included])
698 LIST_MEMBER(sha256, $enabled_digests)
699 test "$found" = "1" && GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha256.lo"
700 AC_DEFINE_UNQUOTED(USE_SHA256, $found, [Defined if this module should be included])
701 LIST_MEMBER(sha512, $enabled_digests)
702 test "$found" = "1" && GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha512.lo"
703 AC_DEFINE_UNQUOTED(USE_SHA512, $found, [Defined if this module should be included])
704 LIST_MEMBER(tiger, $enabled_digests)
705 test "$found" = "1" && GCRYPT_DIGESTS="$GCRYPT_DIGESTS tiger.lo"
706 AC_DEFINE_UNQUOTED(USE_TIGER, $found, [Defined if this module should be included])
707
708 # rmd160 should be included always.
709 GCRYPT_DIGESTS="$GCRYPT_DIGESTS rmd160.lo"
710 AM_CONDITIONAL(USE_RMD160, true)
711 AC_DEFINE_UNQUOTED(USE_RMD160, 1, [Defined if this module should be included])
712
713 LIST_MEMBER(linux, $random_modules)
714 test "$found" = "1" && GCRYPT_RANDOM="$GCRYPT_RANDOM rndlinux.lo"
715 AC_DEFINE_UNQUOTED(USE_RNDLINUX, $found, [Defined if the /dev/random based RNG should be used.])
716
717 LIST_MEMBER(unix, $random_modules)
718 test "$found" = "1" && GCRYPT_RANDOM="$GCRYPT_RANDOM rndunix.lo"
719 AC_DEFINE_UNQUOTED(USE_RNDUNIX, $found, [Defined if the default Unix RNG should be used.])
720 if test "$found" = "1"; then
721    print_egd_notice=yes
722 fi
723
724 LIST_MEMBER(egd, $random_modules)
725 test "$found" = "1" && GCRYPT_RANDOM="$GCRYPT_RANDOM rndegd.lo"
726 AC_DEFINE_UNQUOTED(USE_RNDEGD, $found, [Defined if the EGD based RNG should be used.])
727
728 LIST_MEMBER(w32, $random_modules)
729 test "$found" = "1" && GCRYPT_RANDOM="$GCRYPT_RANDOM rndw32.lo"
730 AC_DEFINE_UNQUOTED(USE_RNDW32, $found, [Defined if the Windows specific RNG should be used.])
731
732 AC_SUBST([GCRYPT_CIPHERS])
733 AC_SUBST([GCRYPT_PUBKEY_CIPHERS])
734 AC_SUBST([GCRYPT_DIGESTS])
735 AC_SUBST([GCRYPT_RANDOM])
736
737 AC_SUBST(LIBGCRYPT_CIPHERS, $enabled_ciphers)
738 AC_SUBST(LIBGCRYPT_PUBKEY_CIPHERS, $enabled_pubkey_ciphers)
739 AC_SUBST(LIBGCRYPT_DIGESTS, $enabled_digests)
740
741 AC_CONFIG_FILES([
742 Makefile
743 mpi/Makefile
744 cipher/Makefile
745 doc/Makefile
746 src/Makefile
747 src/libgcrypt-config
748 tests/Makefile
749 w32-dll/Makefile
750 ])
751 AC_OUTPUT
752
753 # Give some feedback
754 echo
755
756 if test "$print_egd_notice" = "yes"; then
757 cat <<G10EOF
758   
759    The performance of the Unix random gatherer module (rndunix) is not
760    very good and it does not keep the entropy pool over multiple
761    invocations of GnuPG.  The suggested way to overcome this problem is
762    to use the
763   
764                  Entropy Gathering Daemon (EGD)
765   
766    which provides a entropy source for the whole system.  It is written
767    in Perl and available at the GnuPG FTP servers.  To enable EGD you
768    should rerun configure with the option "--enable-static-rnd=egd".
769    For more information consult the GnuPG webpages:
770   
771              http://www.gnupg.org/download.html#egd
772
773 G10EOF
774 fi
775
776 warn=""
777 for file in "random_modules"; do
778   case "$file" in rndunix | rndw32) warn="$warn $file";; esac
779 done
780 if test -n "$warn"; then
781   echo "Please note that you are building a version of Libgcrypt with"
782   echo "  $warn"
783   echo "included.  These parts are licensed under the GPL and thus the"
784   echo "use of this library has to comply with the conditions of the GPL."
785 fi
786
787 # Give some feedback
788 echo   "                Configured for: $PRINTABLE_OS_NAME ($target)"
789 echo
790
791