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