41d1464a9b4333ef94180f8648b33b9adbab5da1
[libgcrypt.git] / configure.ac
1 # Configure.ac script for Libgcrypt
2 # Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
3 #
4 # This file is part of Libgcrypt.
5 #
6 # Libgcrypt is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU Lesser general Public License as
8 # published by the Free Software Foundation; either version 2.1 of
9 # the License, or (at your option) any later version.
10 #
11 # Libgcrypt is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU Lesser General Public License for more details.
15 #
16 # You should have received a copy of the GNU Lesser General Public
17 # License along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19 #
20 # (Process this file with autoconf to produce a configure script.)
21 AC_REVISION($Revision$)dnl
22
23 AC_PREREQ(2.53)
24 # Version numbers (Remember to change them just before a release)
25 #   (Interfaces removed:    CURRENT++, AGE=0, REVISION=0)
26 #   (Interfaces added:      CURRENT++, AGE++, REVISION=0)
27 #   (No interfaces changed:                   REVISION++)
28 AC_INIT(libgcrypt,1.1.8)
29 LIBGCRYPT_LT_CURRENT=5
30 LIBGCRYPT_LT_AGE=4
31 LIBGCRYPT_LT_REVISION=0
32 #-----------------------
33
34 PACKAGE=$PACKAGE_NAME
35 VERSION=$PACKAGE_VERSION
36
37 AC_CONFIG_SRCDIR([src/gcrypt.h])
38 AC_CONFIG_AUX_DIR(scripts)
39 AC_CANONICAL_TARGET()
40 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
41 AM_CONFIG_HEADER(config.h)
42
43 AH_TOP([
44 /* need this, because some autoconf tests rely on this (e.g. stpcpy)
45  * and it should be used for new programs  */
46 #define _GNU_SOURCE  1
47 ])
48
49
50 AH_BOTTOM([
51 #include "gcrypt-defs.h"
52 #define _GCRYPT_IN_LIBGCRYPT 1
53 ])
54
55 AH_VERBATIM([_REENTRANT],
56 [/* To allow the use of Libgcrypt in multithreaded programs we have to use
57     special features from the library. */
58 #ifndef _REENTRANT
59 # define _REENTRANT 1
60 #endif])
61
62
63
64 AC_SUBST(LIBGCRYPT_LT_CURRENT)
65 AC_SUBST(LIBGCRYPT_LT_AGE)
66 AC_SUBST(LIBGCRYPT_LT_REVISION)
67 AC_SUBST(PACKAGE)
68 AC_SUBST(VERSION)
69 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
70 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
71
72 static_modules="sha1 md5 rmd160"
73 static_random_module=""
74
75 AC_PROG_AWK
76
77 MODULES_IN_CIPHER=`$AWK '/^EXTRA_PROGRAMS/ { for(i=3;i<=NF;i++) print $i}' \
78                                               $srcdir/cipher/Makefile.am`
79
80 dnl
81 dnl  Check for random module options
82 dnl
83 dnl  Fixme: get the list of available modules from MODULES_IN_CIPHER
84 dnl         and check against this list
85
86 AC_MSG_CHECKING([which static random module to use])
87 AC_ARG_ENABLE(static-rnd,
88     [  --enable-static-rnd=[egd|unix|linux]  ],
89 [use_static_rnd=$enableval], [use_static_rnd=default] )
90
91 if test "$use_static_rnd" = no; then
92     use_static_rnd=default
93 fi
94
95 case "$use_static_rnd" in
96     egd | linux | unix | default )
97       AC_MSG_RESULT($use_static_rnd)
98       ;;
99     * )
100       AC_MSG_RESULT(invalid argument)
101       AC_MSG_ERROR(there is no random module rnd$use_static_rnd)
102       ;;
103 esac
104
105 AC_ARG_WITH(egd-socket,
106     [  --with-egd-socket=NAME  Use NAME for the EGD socket)],
107             egd_socket_name="$withval", egd_socket_name="" )
108 AC_DEFINE_UNQUOTED(EGD_SOCKET_NAME, "$egd_socket_name",
109                    [Define if you don't want the default EGD socket name.
110                     For details see cipher/rndegd.c])
111
112
113
114 dnl
115 dnl See whether the user wants to disable checking for /dev/random
116
117 AC_MSG_CHECKING([whether use of /dev/random is requested])
118 AC_ARG_ENABLE(dev-random,
119 [  --disable-dev-random    disable the use of dev random],
120     try_dev_random=$enableval, try_dev_random=yes)
121 AC_MSG_RESULT($try_dev_random)
122
123
124 dnl
125 dnl  Check other options
126 dnl
127
128 AC_MSG_CHECKING([whether assembler modules are requested])
129 AC_ARG_ENABLE(asm,
130 [  --disable-asm           do not use assembler modules],
131      try_asm_modules=$enableval, try_asm_modules=yes)
132 AC_MSG_RESULT($try_asm_modules)
133
134 AC_MSG_CHECKING([whether memory guard is requested])
135 AC_ARG_ENABLE(m-guard,
136     [  --enable-m-guard        enable memory guard facility],
137     use_m_guard=$enableval, use_m_guard=no)
138     AC_MSG_RESULT($use_m_guard)
139 if test "$use_m_guard" = yes ; then
140     AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
141 fi
142
143 dnl
144 dnl Check whether we want to use Linux capabilities
145 dnl
146 AC_MSG_CHECKING([whether use of capabilities is requested])
147 AC_ARG_WITH(capabilities,
148     [  --with-capabilities     use linux capabilities [default=no]],
149 [use_capabilities="$withval"],[use_capabilities=no])
150 AC_MSG_RESULT($use_capabilities)
151
152
153 AM_MAINTAINER_MODE
154
155 dnl Checks for programs.
156
157 dnl
158 dnl Setup some stuff depending on host/target.
159 dnl
160 case "${target}" in
161     *-*-mingw32*)
162         # special stuff for Windoze NT
163         disallowed_modules="rndunix rndlinux rndegd"
164         ;;
165     *)
166         disallowed_modules="rndw32"
167        ;;
168 esac
169
170 AC_PROG_MAKE_SET
171 AM_SANITY_CHECK
172 missing_dir=`cd $ac_aux_dir && pwd`
173 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
174 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
175 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
176 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
177 dnl AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
178 AC_PROG_CC
179 AC_PROG_CPP
180 AM_PROG_AS
181 AC_ISC_POSIX
182 AC_PROG_INSTALL
183 AC_PROG_AWK
184 GPH_PROG_DB2ANY
185
186 AM_PROG_LIBTOOL
187
188
189 MPI_OPT_FLAGS=""
190
191
192 try_gettext=no
193 case "${target}" in
194     *-*-mingw32*)
195         # special stuff for Windoze NT
196         ac_cv_have_dev_random=no
197         AC_DEFINE(USE_ONLY_8DOT3,1,
198                   [set this to limit filenames to the 8.3 format])
199         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
200                   [defined if we must run on a stupid file system])
201         AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
202                   [defined if we run on some of the PCDOS like systems 
203                    (DOS, Windoze. OS/2) with special properties like
204                     no file modes])
205         try_gettext="no"
206         ;;
207     i?86-emx-os2 | i?86-*-os2*emx )
208         # OS/2 with the EMX environment
209         ac_cv_have_dev_random=no
210         AC_DEFINE(HAVE_DRIVE_LETTERS)
211         AC_DEFINE(HAVE_DOSISH_SYSTEM)
212         try_gettext="no"
213         ;;
214
215     i?86-*-msdosdjgpp*)
216         # DOS with the DJGPP environment
217         ac_cv_have_dev_random=no
218         AC_DEFINE(HAVE_DRIVE_LETTERS)
219         AC_DEFINE(HAVE_DOSISH_SYSTEM)
220         try_gettext="no"
221         ;;
222
223     *-*-freebsd*)
224        # FreeBSD
225        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
226        LDFLAGS="$LDFLAGS -L/usr/local/lib"
227        ;;
228
229     *-*-hpux*)
230         if test -z "$GCC" ; then
231             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
232         fi
233         ;;
234     *-dec-osf4*)
235         if test -z "$GCC" ; then
236             # Suppress all warnings
237             # to get rid of the unsigned/signed char mismatch warnings.
238             CFLAGS="$CFLAGS -w"
239         fi
240         ;;
241     m68k-atari-mint)
242         ;;
243     *)
244        ;;
245 esac
246
247 AC_SUBST(MPI_OPT_FLAGS)
248 GNUPG_SYS_SYMBOL_UNDERSCORE
249 GNUPG_CHECK_PIC
250 #GNUPG_CHECK_EXPORTDYNAMIC
251 #if test "$NO_PIC" = yes; then
252 #    try_dynload=no
253 #fi
254
255
256 case "${target}" in
257     *-*-mingw32*)
258         PRINTABLE_OS_NAME="MingW32"
259         ;;
260     i?86-emx-os2 | i?86-*-os2*emx )
261         PRINTABLE_OS_NAME="OS/2"
262         ;;
263     i?86-*-msdosdjgpp*)
264         PRINTABLE_OS_NAME="MSDOS/DJGPP"
265         try_dynload=no
266         ;;
267     *-linux*)
268         PRINTABLE_OS_NAME="GNU/Linux"
269         ;;
270 dnl let that after linux to avoid gnu-linux problems
271     *-gnu*)
272         PRINTABLE_OS_NAME="GNU/Hurd"
273         ;;
274     *)
275         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
276         ;;
277 esac
278 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
279                    [A human readable text with the name of the OS])
280
281 dnl  Fixme: Are these the best flags for OpenBSD????
282 case "${target}" in
283     *-openbsd* | *-netbsd*)
284         NAME_OF_DEV_RANDOM="/dev/srandom"
285         NAME_OF_DEV_URANDOM="/dev/urandom"
286 #       DYNLINK_MOD_CFLAGS="-shared -rdynamic $CFLAGS_PIC -Wl,-Bshareable -Wl,-x"
287         ;;
288
289     *-solaris* | *-irix* | *-dec-osf* )
290         NAME_OF_DEV_RANDOM="/dev/random"
291         NAME_OF_DEV_URANDOM="/dev/random"
292 #       DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC"
293         ;;
294
295     *)
296         NAME_OF_DEV_RANDOM="/dev/random"
297         NAME_OF_DEV_URANDOM="/dev/urandom"
298         # -shared is a gcc-ism.  Find pic flags from GNUPG_CHECK_PIC.
299 #        if test -n "$GCC" ; then
300 #           DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC"                            
301 #        else
302 #           DYNLINK_MOD_CFLAGS="$CFLAGS_PIC"
303 #        fi
304         ;;
305 esac
306 AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM",
307                    [defined to the name of the strong random device])
308 AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM",
309                    [defined to the name of the weaker random device])
310 AC_SUBST(MPI_OPT_FLAGS)
311
312
313 dnl Checks for libraries.
314
315 USE_NLS=no
316 USE_INCLUDED_LIBINTL=no
317 AC_SUBST(USE_NLS)
318 AC_SUBST(USE_INCLUDED_LIBINTL)
319
320
321 dnl Solaris needs -lsocket and -lnsl. Unisys system includes
322 dnl gethostbyname in libsocket but needs libnsl for socket.
323 AC_CHECK_LIB(nsl, gethostbyname)
324 AC_CHECK_LIB(socket, socket, ac_need_libsocket=1, ac_try_nsl=1)
325 if test x$ac_need_libsocket = x1; then
326     LIBS="$LIBS -lsocket"
327 fi
328 if test x$ac_try_nsl = x1; then
329     AC_CHECK_LIB(nsl, gethostbyname, ac_need_libnsl=1)
330     if test x$ac_need_libnsl = x1
331     then
332         LIBS="$LIBS -lnsl"
333     fi
334 fi
335
336
337 dnl Checks for header files.
338 AC_HEADER_STDC
339 AC_CHECK_HEADERS(unistd.h langinfo.h termio.h)
340
341
342 dnl Checks for typedefs, structures, and compiler characteristics.
343 AC_C_CONST
344 AC_C_INLINE
345 AC_TYPE_SIZE_T
346 AC_TYPE_SIGNAL
347 AC_DECL_SYS_SIGLIST
348
349 GNUPG_CHECK_ENDIAN
350
351
352 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
353 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
354 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
355 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
356 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
357
358 AC_CHECK_SIZEOF(unsigned short, 2)
359 AC_CHECK_SIZEOF(unsigned int, 4)
360 AC_CHECK_SIZEOF(unsigned long, 4)
361 AC_CHECK_SIZEOF(unsigned long long, 0)
362
363 if test "$ac_cv_sizeof_unsigned_short" = "0" \
364    || test "$ac_cv_sizeof_unsigned_int" = "0" \
365    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
366     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
367 fi
368
369
370 #
371 # Checks for library functions.
372 #
373 AC_FUNC_VPRINTF
374 dnl We have replacements for these in src/missing-string.c
375 AC_CHECK_FUNCS(stpcpy strsep strlwr strcasecmp)
376 dnl We have replacements for these in src/g10lib.h
377 AC_CHECK_FUNCS(strtoul memmove stricmp atexit raise)
378 dnl Other checks
379 AC_CHECK_FUNCS(strerror tcgetattr rand mmap)
380 AC_CHECK_FUNCS(gettimeofday getrusage gethrtime setrlimit clock_gettime)
381 AC_CHECK_FUNCS(getpagesize strftime nl_langinfo)
382 AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask fopen64 fstat64)
383
384 GNUPG_CHECK_MLOCK
385 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
386
387 dnl
388 dnl Check whether we can use Linux capabilities as requested
389 dnl
390 if test "$use_capabilities" = "yes" ; then
391 use_capabilities=no
392 AC_CHECK_HEADERS(sys/capability.h)
393 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
394   AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
395   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
396      AC_DEFINE(USE_CAPABILITIES,1,
397                [define if capabilities should be used])
398      LIBS="$LIBS -lcap"
399      use_capabilities=yes
400   fi
401 fi
402 if test "$use_capabilities" = "no" ; then
403     AC_MSG_WARN([[
404 ***
405 *** The use of capabilities on this system is not possible.
406 *** You need a recent Linux kernel and some patches:
407 ***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
408 ***   fcap-module-990613.tar.gz     (kernel module)
409 ***   libcap-1.92.tar.gz            (user mode library and utilities)
410 *** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
411 *** set (filesystems menu). Be warned: This code is *really* ALPHA.
412 ***]])
413 fi
414 fi
415
416
417 GNUPG_CHECK_IPC
418 if test "$ac_cv_header_sys_shm_h" = "yes"; then
419   AC_DEFINE(USE_SHM_COPROCESSING,1,
420             [define if the shared memory interface should be made available])
421 fi
422
423 dnl
424 dnl check whether we have a random device
425 dnl
426 if test "$try_dev_random" = yes ; then
427     AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
428     [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
429       ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
430     if test "$ac_cv_have_dev_random" = yes; then
431         AC_DEFINE(HAVE_DEV_RANDOM,1,
432                  [defined if the system supports a random device] )
433     fi
434 else
435     AC_MSG_CHECKING(for random device)
436     ac_cv_have_dev_random=no
437     AC_MSG_RESULT(has been disabled)
438 fi
439
440 dnl
441 dnl and whether this device supports ioctl
442 dnl (Note, that we should do a real test here)
443 dnl
444 if test "$ac_cv_have_dev_random" = yes ; then
445     AC_CHECK_HEADERS(linux/random.h)
446     AC_CACHE_CHECK(for random device ioctl, ac_cv_have_dev_random_ioctl,
447       [ if test "$ac_cv_header_linux_random_h" = yes ; then
448           ac_cv_have_dev_random_ioctl=yes;
449         else
450           ac_cv_have_dev_random_ioctl=no;
451         fi
452       ])
453     if test "$ac_cv_have_dev_random_ioctl" = yes; then
454         AC_DEFINE(HAVE_DEV_RANDOM_IOCTL,1,
455                   [defined if the random device supports some IOCTLs])
456     fi
457 fi
458
459
460 dnl
461 dnl Figure out the default linkage mode for cipher modules
462 dnl
463 print_egd_notice=no
464 if test "$use_static_rnd" = default; then
465   if test "$ac_cv_have_dev_random" = yes; then
466       static_random_module="rndlinux"
467   else
468       case "${target}" in
469           *-*-mingw32*)
470               static_random_module="rndw32"
471               AC_DEFINE(USE_STATIC_RNDW32,1,
472                        [At a certain point in the code we need to know that
473                         we use the Windows random module.])
474               ;;
475           i?86-emx-os2|i?86-*-os2*emx)
476               static_random_module="rndos2"
477               ;;
478           m68k-atari-mint)
479               static_random_module="rndatari"
480               ;;
481           i?86-*-msdosdjgpp*)
482               :
483               ;;
484           *)
485               static_random_module="rndunix"
486               print_egd_notice=yes
487              ;;
488       esac
489   fi
490 else
491   if test "$use_static_rnd" = none; then
492     :
493   else
494     static_random_module="rnd$use_static_rnd"
495     if test "$use_static_rnd" = "unix"; then
496         print_egd_notice=yes
497     fi
498   fi
499 fi
500
501
502 dnl
503 dnl Parse the modules list and build the list
504 dnl of static and dymically linked modules
505 dnl
506 dnl (We always need a static rmd160)
507 static_modules="$static_modules rmd160 $static_random_module"
508 STATIC_CIPHER_NAMES=""
509 STATIC_CIPHER_OBJS=""
510 for name in $MODULES_IN_CIPHER; do
511     x="yes"
512     for i in $disallowed_modules; do
513         if test "$name" = "$i" ; then x="no" ; fi
514     done;
515     if test $x = yes; then
516         x="no"
517         for i in $static_modules; do
518             if test "$name" = "$i" ; then
519                 x="yes"
520             fi
521         done;
522         if test $x = yes; then
523             STATIC_CIPHER_NAMES="$STATIC_CIPHER_NAMES $name"
524             STATIC_CIPHER_OBJS="$STATIC_CIPHER_OBJS $name.lo"
525         fi
526
527     fi
528 done
529 AC_MSG_RESULT()
530 AC_SUBST(STATIC_CIPHER_OBJS)
531 AC_SUBST(STATIC_CIPHER_NAMES)
532
533
534 dnl
535 dnl And build the constructor file
536 dnl
537
538 test -d cipher || mkdir cipher
539 cat <<G10EOF >cipher/construct.c
540 /* automatically generated by configure - do not edit */
541
542 G10EOF
543 for name in $STATIC_CIPHER_NAMES; do
544     echo "void _gcry_${name}_constructor(void);" >>cipher/construct.c
545 done
546 AC_MSG_RESULT()
547 cat <<G10EOF >>cipher/construct.c
548
549 void
550 _gcry_cipher_modules_constructor(void)
551 {
552     static int done = 0;
553     if( done )
554         return;
555     done = 1;
556
557 G10EOF
558 for name in $STATIC_CIPHER_NAMES; do
559     echo "   _gcry_${name}_constructor();" >>cipher/construct.c
560 done
561 echo '}' >>cipher/construct.c
562
563
564
565
566 dnl
567 dnl Figure how to link the cipher modules
568 dnl
569 AC_SUBST(STATIC_CIPHER_OBJS)
570
571 #
572 # setup assembler stuff
573 #
574 AC_MSG_CHECKING(for mpi assembler functions)
575 if test -f $srcdir/mpi/config.links ; then
576     . $srcdir/mpi/config.links
577     AC_CONFIG_LINKS("$mpi_ln_list")
578     ac_cv_mpi_mod_list="$mpi_mod_list"
579     ac_cv_mpi_sflags="$mpi_sflags"
580     ac_cv_mpi_config_done="yes"
581     AC_MSG_RESULT(done)
582 else
583     AC_MSG_RESULT(failed)
584     AC_MSG_ERROR([mpi/config.links missing!])
585 fi
586 MPI_MOD_LIST_LO=""
587 MPI_MOD_LIST_O=""
588 if test "$ac_cv_mpi_mod_list" != ""; then
589   for i in $ac_cv_mpi_mod_list; do
590       MPI_MOD_LIST_LO="$MPI_MOD_LIST_LO $i.lo"
591       MPI_MOD_LIST_O="$MPI_MOD_LIST_O $i.o"
592   done
593 fi
594 AC_SUBST(MPI_MOD_LIST_LO)
595 AC_SUBST(MPI_MOD_LIST_O)
596 MPI_SFLAGS="$ac_cv_mpi_sflags"
597 AC_SUBST(MPI_SFLAGS)
598
599 # [not used anymore]
600 ## Set the condtionals for the assembler modules
601 ## Fixme: We should put this into acinclude and write a script
602 ##        which can be run to update this list and the mpi/Makefile
603 #AM_CONDITIONAL(MPI_MOD_ASM_MPIH_ADD1, test "$mpi_mod_asm_mpih_add1" = yes )
604 #AM_CONDITIONAL(MPI_MOD_ASM_MPIH_SUB1, test "$mpi_mod_asm_mpih_sub1" = yes )
605 #AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL1, test "$mpi_mod_asm_mpih_mul1" = yes )
606 #AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL2, test "$mpi_mod_asm_mpih_mul2" = yes )
607 #AM_CONDITIONAL(MPI_MOD_ASM_MPIH_MUL3, test "$mpi_mod_asm_mpih_mul3" = yes )
608 #AM_CONDITIONAL(MPI_MOD_ASM_MPIH_LSHIFT, test "$mpi_mod_asm_mpih_lshift" = yes )
609 #AM_CONDITIONAL(MPI_MOD_ASM_MPIH_RSHIFT, test "$mpi_mod_asm_mpih_rshift" = yes )
610 #AM_CONDITIONAL(MPI_MOD_ASM_UDIV, test "$mpi_mod_asm_udiv" = yes )
611 #AM_CONDITIONAL(MPI_MOD_ASM_UDIV_QRNND, test "$mpi_mod_asm_udiv_qrnnd" = yes )
612 ## And the corresponding conditionals for C
613 #AM_CONDITIONAL(MPI_MOD_C_MPIH_ADD1, test "$mpi_mod_c_mpih_add1" = yes )
614 #AM_CONDITIONAL(MPI_MOD_C_MPIH_SUB1, test "$mpi_mod_c_mpih_sub1" = yes )
615 #AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL1, test "$mpi_mod_c_mpih_mul1" = yes )
616 #AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL2, test "$mpi_mod_c_mpih_mul2" = yes )
617 #AM_CONDITIONAL(MPI_MOD_C_MPIH_MUL3, test "$mpi_mod_c_mpih_mul3" = yes )
618 #AM_CONDITIONAL(MPI_MOD_C_MPIH_LSHIFT, test "$mpi_mod_c_mpih_lshift" = yes )
619 #AM_CONDITIONAL(MPI_MOD_C_MPIH_RSHIFT, test "$mpi_mod_c_mpih_rshift" = yes )
620 #AM_CONDITIONAL(MPI_MOD_C_UDIV, test "$mpi_mod_c_udiv" = yes )
621 #AM_CONDITIONAL(MPI_MOD_C_UDIV_QRNND, test "$mpi_mod_c_udiv_qrnnd" = yes )
622 #
623
624
625 # Allow users to append something to the version string without
626 # flagging it as development version.  The user version part is
627 # considered everything after a dash.
628 changequote(,)dnl
629 tmp_pat='[a-zA-Z]'
630 changequote([,])dnl
631 if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
632     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
633               [Defined if this is not a regular release])
634 fi
635
636 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
637
638 GNUPG_CHECK_GNUMAKE
639
640 if test "$GCC" = yes; then
641     if test "$MAINTAINER_MODE" = "yes"; then
642         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
643     else
644         CFLAGS="$CFLAGS -Wall"
645     fi
646 fi
647
648 dnl
649 dnl Make the version number in src/gcrypt.h the same as the one here.
650 dnl (this is easier than to have a *.in file just for one substitution)
651 dnl
652 GNUPG_FIX_HDR_VERSION([src/gcrypt.h], GCRYPT_VERSION)
653
654 LIBGCRYPT_LIBS="-L${libdir} -lgcrypt"
655 LIBGCRYPT_CFLAGS=""
656 AC_SUBST(LIBGCRYPT_LIBS)
657 AC_SUBST(LIBGCRYPT_CFLAGS)
658
659 AC_CONFIG_COMMANDS([gcrypt-defs],[[
660 chmod +x src/libgcrypt-config
661 cat >gcrypt-defs.tmp <<G10EOF
662 /* Generated automatically by configure */
663 #ifdef HAVE_DRIVE_LETTERS
664   #define GNUPG_LOCALEDIR "c:/lib/gnupg/locale"
665   #define GNUPG_LIBDIR  "c:/lib/gnupg"
666   #define GNUPG_DATADIR "c:/lib/gnupg"
667   #define GNUPG_HOMEDIR "c:/gnupg-test"
668 #else
669   #define GNUPG_LOCALEDIR "${prefix}/${DATADIRNAME}/locale"
670   #define GNUPG_LIBDIR  "${libdir}/gnupg"
671   #define GNUPG_DATADIR "${datadir}/gnupg"
672   #ifdef __VMS
673     #define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
674   #else
675     #define GNUPG_HOMEDIR "~/.gnupg-test" 
676   #endif
677 #endif
678 G10EOF
679 if cmp -s gcrypt-defs.h gcrypt-defs.tmp 2>/dev/null; then
680     echo "gcrypt-defs.h is unchanged"
681     rm -f gcrypt-defs.tmp
682 else
683     rm -f gcrypt-defs.h
684     mv gcrypt-defs.tmp gcrypt-defs.h
685     echo "gcrypt-defs.h created"
686 fi
687 ]],[[
688 prefix=$prefix
689 exec_prefix=$exec_prefix
690 libdir=$libdir
691 datadir=$datadir
692 DATADIRNAME=$DATADIRNAME
693 ]])
694
695
696 AC_CONFIG_FILES([
697 Makefile
698 mpi/Makefile
699 cipher/Makefile
700 doc/Makefile
701 doc/version.sgml
702 src/Makefile
703 src/libgcrypt-config
704 tests/Makefile
705 ])
706 AC_OUTPUT
707
708 # Give some feedback
709 echo
710
711 if test "$print_egd_notice" = "yes"; then
712 cat <<G10EOF
713   
714    The performance of the Unix random gatherer module (rndunix) is not
715    very good and it does not keep the entropy pool over multiple
716    invocations of GnuPG.  The suggested way to overcome this problem is
717    to use the
718   
719                  Entropy Gathering Daemon (EGD)
720   
721    which provides a entropy source for the whole system.  It is written
722    in Perl and available at the GnuPG FTP servers.  To enable EGD you
723    should rerun configure with the option "--enable-static-rnd=egd".
724    For more information consult the GnuPG webpages:
725   
726              http://www.gnupg.org/download.html#egd
727
728 G10EOF
729 fi
730
731 warn=""
732 for file in "$static_random_module"; do
733   case "$file" in rndunix | rndw32) warn="$warn $file";; esac
734 done
735 if test -n "$warn"; then
736   echo "Please note that you are building a version of Libgcrypt with"
737   echo "  $warn"
738   echo "included.  These parts are licensed under the GPL and thus the"
739   echo "use of this library has to comply with the conditions of the GPL."
740 fi
741