Parse EXTCAP lines from the card.
[gnupg.git] / configure.ac
1 # configure.ac script for GnuPG
2 # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
3 #               2008, 2009 Free Software Foundation, Inc.
4 #
5 # This file is part of GnuPG.
6
7 # GnuPG is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
11
12 # GnuPG 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 General Public License for more details.
16
17 # You should have received a copy of the GNU General Public License
18 # 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
22 AC_PREREQ(2.59)
23 min_automake_version="1.9.3"
24
25 # Remember to change the version number immediately *after* a release.
26 # Set my_issvn to "yes" for non-released code.  Remember to run an
27 # "svn up" and "autogen.sh --force" right before creating a distribution.
28 m4_define([my_version], [1.4.10])
29 m4_define([my_issvn], [yes])
30 m4_define([svn_revision], m4_esyscmd([printf "%d" $(svn info 2>/dev/null \
31           | sed -n '/^Revision:/ s/[^0-9]//gp'|head -1)]))
32 AC_INIT([gnupg], 
33         [my_version[]m4_if(my_issvn,[yes],[-svn[]svn_revision])],
34         [bug-gnupg@gnu.org])
35 # Set development_version to yes if the minor number is odd or you
36 # feel that the default check for a development version is not
37 # sufficient.
38 development_version=no
39
40 AC_CONFIG_AUX_DIR(scripts)
41 AC_CONFIG_SRCDIR(g10/gpg.c)
42 AC_CANONICAL_HOST
43 AM_INIT_AUTOMAKE([std-options])
44 AB_INIT
45 AM_CONFIG_HEADER(config.h)
46
47 AC_GNU_SOURCE
48
49 dnl
50 dnl  Check for random module options
51 dnl
52 AC_MSG_CHECKING([which random module to use])
53 AC_ARG_ENABLE(static-rnd,
54     AC_HELP_STRING([[--enable-static-rnd=[egd|unix|linux|auto]]],
55                    [specify a random number source]),
56     [use_static_rnd=$enableval], [use_static_rnd=default])
57
58 if test "$use_static_rnd" = no; then
59     use_static_rnd=default
60 fi
61
62 case "$use_static_rnd" in
63     egd | linux | unix | default )
64       AC_MSG_RESULT($use_static_rnd)
65       ;;
66     auto )
67       AC_MSG_RESULT(automagically selected at runtime)
68       ;;
69     * )
70       AC_MSG_RESULT(invalid argument)
71       AC_MSG_ERROR(there is no random module rnd$use_static_rnd)
72       ;;
73 esac
74
75 AC_ARG_WITH(egd-socket,
76     AC_HELP_STRING([--with-egd-socket=NAME],[use NAME for the EGD socket]),
77             egd_socket_name="$withval", egd_socket_name="" )
78 AC_DEFINE_UNQUOTED(EGD_SOCKET_NAME, "$egd_socket_name",
79                    [Define if you don't want the default EGD socket name.
80                     For details see cipher/rndegd.c])
81
82
83 dnl
84 dnl See whether the user wants to disable checking for /dev/random
85
86 AC_MSG_CHECKING([whether use of /dev/random is requested])
87 AC_ARG_ENABLE(dev-random,
88    AC_HELP_STRING([--disable-dev-random],[disable the use of dev random]),
89    try_dev_random=$enableval, try_dev_random=yes)
90 AC_MSG_RESULT($try_dev_random)
91
92
93 dnl
94 dnl  Check other options
95 dnl
96
97 AC_MSG_CHECKING([whether assembler modules are requested])
98 AC_ARG_ENABLE(asm,
99    AC_HELP_STRING([--disable-asm],[do not use assembler modules]),
100      try_asm_modules=$enableval, try_asm_modules=yes)
101 AC_MSG_RESULT($try_asm_modules)
102
103 dnl AC_MSG_CHECKING([whether memory guard is requested])
104 dnl AC_ARG_ENABLE(m-guard,
105 dnl     [  --enable-m-guard        enable memory guard facility],
106 dnl     use_m_guard=$enableval, use_m_guard=no)
107 dnl AC_MSG_RESULT($use_m_guard)
108 dnl if test "$use_m_guard" = yes ; then
109 dnl     AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
110 dnl fi
111
112 # SELinux support includes tracking of sensitive files to avoid
113 # leaking their contents through processing these files by gpg itself
114 AC_MSG_CHECKING([whether SELinux support is requested])
115 AC_ARG_ENABLE(selinux-support,
116               AC_HELP_STRING([--enable-selinux-support],
117                              [enable SELinux support]),
118               selinux_support=$enableval, selinux_support=no)
119 AC_MSG_RESULT($selinux_support)
120
121
122 AC_MSG_CHECKING([whether the new iconv based code is requested])
123 AC_ARG_ENABLE(gnupg-iconv,
124               AC_HELP_STRING([--disable-gnupg-iconv],
125                              [disable the new iconv code]),
126               gnupg_use_iconv=$enableval, gnupg_use_iconv=yes)
127 AC_MSG_RESULT($gnupg_use_iconv)
128
129 dnl See if we are disabling any algorithms or features for a smaller
130 dnl binary
131
132 try_extensions=no
133
134 try_gettext=yes
135 try_dns=yes
136 use_rsa=yes
137 use_idea=yes
138 use_cast5=yes
139 use_blowfish=yes
140 use_aes=yes
141 use_twofish=yes
142 use_camellia=yes
143 use_sha256=yes
144 use_sha512=yes
145 use_bzip2=yes
146 use_exec=yes
147 card_support=yes
148 agent_support=yes
149 disable_keyserver_path=no
150
151 AC_ARG_ENABLE(minimal,
152    AC_HELP_STRING([--enable-minimal],[build the smallest gpg binary possible]),
153    try_gettext=no
154    try_dns=no
155    use_rsa=no
156    use_idea=no
157    use_cast5=no
158    use_blowfish=no
159    use_aes=no
160    use_twofish=no
161    use_camellia=no
162    use_sha256=no
163    use_sha512=no
164    use_bzip2=no
165    use_exec=no
166    card_support=no
167    agent_support=no)
168
169
170 AC_MSG_CHECKING([whether OpenPGP card support is requested])
171 AC_ARG_ENABLE(card-support,
172               AC_HELP_STRING([--disable-card-support],
173                              [disable OpenPGP card support]),
174               card_support=$enableval)
175 AC_MSG_RESULT($card_support)
176
177
178 # Note that we may later disable the agent support based on the platform.
179 AC_MSG_CHECKING([whether gpg-agent support is requested])
180 AC_ARG_ENABLE(agent-support,
181               AC_HELP_STRING([--disable-agent-support],
182                              [disable gpg-agent support]),
183               agent_support=$enableval)
184 AC_MSG_RESULT($agent_support)
185
186
187 AC_MSG_CHECKING([whether to enable the RSA public key algorithm])
188 AC_ARG_ENABLE(rsa,
189    AC_HELP_STRING([--disable-rsa],[disable the RSA public key algorithm]),
190    use_rsa=$enableval)
191 AC_MSG_RESULT($use_rsa)
192 if test x"$use_rsa" = xyes ; then
193    AC_DEFINE(USE_RSA,1,[Define to include the RSA public key algorithm])
194 fi
195
196 AC_MSG_CHECKING([whether to enable the IDEA cipher])
197 AC_ARG_ENABLE(idea,
198    AC_HELP_STRING([--disable-idea],[disable the IDEA cipher]),
199    use_idea=$enableval)
200 AC_MSG_RESULT($use_idea)
201 if test x"$use_idea" = xyes ; then
202    AC_DEFINE(USE_IDEA,1,[Define to include the IDEA cipher])
203
204 # We don't need idea but some people claim that they need it for
205 # research etc., so we allow to place an idea source code into the
206 # cipher directory and statically link it if available, otherwise we
207 # link to a stub.  We don't use AC_CHECK_FILE to avoid caching.
208
209    AC_MSG_CHECKING([for idea cipher module])
210    tmp=""
211    if test -f $srcdir/cipher/idea.c; then 
212       IDEA_O=idea.o
213       tmp=idea
214    else
215       IDEA_O=idea-stub.o
216       tmp=no
217       try_extensions=yes
218    fi
219    AC_SUBST(IDEA_O)
220    AC_MSG_RESULT($tmp)
221 fi
222
223 AC_MSG_CHECKING([whether to enable the CAST5 cipher])
224 AC_ARG_ENABLE(cast5,
225    AC_HELP_STRING([--disable-cast5],[disable the CAST5 cipher]),
226    use_cast5=$enableval)
227 AC_MSG_RESULT($use_cast5)
228 if test x"$use_cast5" = xyes ; then
229    AC_DEFINE(USE_CAST5,1,[Define to include the CAST5 cipher])
230 fi
231
232 AC_MSG_CHECKING([whether to enable the BLOWFISH cipher])
233 AC_ARG_ENABLE(blowfish,
234    AC_HELP_STRING([--disable-blowfish],[disable the BLOWFISH cipher]),
235    use_blowfish=$enableval)
236 AC_MSG_RESULT($use_blowfish)
237 if test x"$use_blowfish" = xyes ; then
238    AC_DEFINE(USE_BLOWFISH,1,[Define to include the BLOWFISH cipher])
239 fi
240
241 AC_MSG_CHECKING([whether to enable the AES ciphers])
242 AC_ARG_ENABLE(aes,
243    AC_HELP_STRING([--disable-aes],[disable the AES, AES192, and AES256 ciphers]),
244    use_aes=$enableval)
245 AC_MSG_RESULT($use_aes)
246 if test x"$use_aes" = xyes ; then
247    AC_DEFINE(USE_AES,1,[Define to include the AES, AES192, and AES256 ciphers])
248 fi
249
250 AC_MSG_CHECKING([whether to enable the TWOFISH cipher])
251 AC_ARG_ENABLE(twofish,
252    AC_HELP_STRING([--disable-twofish],[disable the TWOFISH cipher]),
253    use_twofish=$enableval)
254 AC_MSG_RESULT($use_twofish)
255 if test x"$use_twofish" = xyes ; then
256    AC_DEFINE(USE_TWOFISH,1,[Define to include the TWOFISH cipher])
257 fi
258
259 AC_MSG_CHECKING([whether to enable the CAMELLIA cipher])
260 AC_ARG_ENABLE(camellia,
261    AC_HELP_STRING([--enable-camellia],[enable the CAMELLIA cipher]),
262    use_camellia=$enableval)
263 AC_MSG_RESULT($use_camellia)
264 if test x"$use_camellia" = xyes ; then
265    AC_DEFINE(USE_CAMELLIA,1,[Define to include the CAMELLIA cipher])
266 fi
267
268 AC_MSG_CHECKING([whether to enable the SHA-224 and SHA-256 digests])
269 AC_ARG_ENABLE(sha256,
270    AC_HELP_STRING([--disable-sha256],[disable the SHA-224 and SHA-256 digests]),
271    use_sha256=$enableval)
272 AC_MSG_RESULT($use_sha256)
273 if test x"$use_sha256" = xyes ; then
274    AC_DEFINE(USE_SHA256,1,[Define to include the SHA-224 and SHA-256 digests])
275 fi
276
277 dnl SHA512 is defined only after we confirm 64-bit support later
278 AC_MSG_CHECKING([whether to enable the SHA-384 and SHA-512 digests])
279 AC_ARG_ENABLE(sha512,
280    AC_HELP_STRING([--disable-sha512],[disable the SHA-384 and SHA-512 digests]),
281    use_sha512=$enableval)
282 AC_MSG_RESULT($use_sha512)
283
284 dnl BZLIB is defined only after we confirm the library is available later
285 AC_MSG_CHECKING([whether to enable the BZIP2 compression algorithm])
286 AC_ARG_ENABLE(bzip2,
287    AC_HELP_STRING([--disable-bzip2],[disable the BZIP2 compression algorithm]),
288    use_bzip2=$enableval)
289 AC_MSG_RESULT($use_bzip2)
290
291 AC_MSG_CHECKING([whether to enable external program execution])
292 AC_ARG_ENABLE(exec,
293     AC_HELP_STRING([--disable-exec],[disable all external program execution]),
294     use_exec=$enableval)
295 AC_MSG_RESULT($use_exec)
296 if test "$use_exec" = no ; then
297     AC_DEFINE(NO_EXEC,1,[Define to disable all external program execution])
298 fi
299
300 if test "$use_exec" = yes ; then
301   AC_MSG_CHECKING([whether to enable photo ID viewing])
302   AC_ARG_ENABLE(photo-viewers,
303       AC_HELP_STRING([--disable-photo-viewers],[disable photo ID viewers]),
304       [if test "$enableval" = no ; then
305          AC_DEFINE(DISABLE_PHOTO_VIEWER,1,[define to disable photo viewing])
306       fi],enableval=yes)
307   gnupg_cv_enable_photo_viewers=$enableval
308   AC_MSG_RESULT($enableval)
309
310   if test "$gnupg_cv_enable_photo_viewers" = yes ; then
311     AC_MSG_CHECKING([whether to use a fixed photo ID viewer])
312     AC_ARG_WITH(photo-viewer,
313         AC_HELP_STRING([--with-photo-viewer=FIXED_VIEWER],
314                        [set a fixed photo ID viewer]),
315         [if test "$withval" = yes ; then
316            withval=no
317         elif test "$withval" != no ; then
318            AC_DEFINE_UNQUOTED(FIXED_PHOTO_VIEWER,"$withval",
319                             [if set, restrict photo-viewer to this])
320         fi],withval=no)
321     AC_MSG_RESULT($withval)
322   fi
323
324   AC_MSG_CHECKING([whether to enable external keyserver helpers])
325   AC_ARG_ENABLE(keyserver-helpers,
326       AC_HELP_STRING([--disable-keyserver-helpers],
327                      [disable all external keyserver support]),
328       [if test "$enableval" = no ; then
329          AC_DEFINE(DISABLE_KEYSERVER_HELPERS,1,
330                   [define to disable keyserver helpers])
331       fi],enableval=yes)
332   gnupg_cv_enable_keyserver_helpers=$enableval
333   AC_MSG_RESULT($enableval)
334
335   if test "$gnupg_cv_enable_keyserver_helpers" = yes ; then
336 dnl LDAP is defined only after we confirm the library is available later
337     AC_MSG_CHECKING([whether LDAP keyserver support is requested])
338     AC_ARG_ENABLE(ldap,
339       AC_HELP_STRING([--disable-ldap],[disable LDAP keyserver interface only]),
340       try_ldap=$enableval, try_ldap=yes)
341     AC_MSG_RESULT($try_ldap)
342
343     AC_MSG_CHECKING([whether HKP keyserver support is requested])
344     AC_ARG_ENABLE(hkp,
345       AC_HELP_STRING([--disable-hkp],[disable HKP keyserver interface only]),
346       try_hkp=$enableval, try_hkp=yes)
347     AC_MSG_RESULT($try_hkp)
348
349     AC_MSG_CHECKING([whether finger key fetching support is requested])
350     AC_ARG_ENABLE(finger,
351       AC_HELP_STRING([--disable-finger],
352         [disable finger key fetching interface only]),
353       try_finger=$enableval, try_finger=yes)
354     AC_MSG_RESULT($try_finger)
355
356     AC_MSG_CHECKING([whether generic object key fetching support is requested])
357     AC_ARG_ENABLE(generic,
358       AC_HELP_STRING([--disable-generic],
359         [disable generic object key fetching interface only]),
360       try_generic=$enableval, try_generic=yes)
361     AC_MSG_RESULT($try_generic)
362
363     AC_MSG_CHECKING([whether email keyserver support is requested])
364     AC_ARG_ENABLE(mailto,
365       AC_HELP_STRING([--enable-mailto],
366         [enable email keyserver interface only]),
367       try_mailto=$enableval, try_mailto=no)
368     AC_MSG_RESULT($try_mailto)
369   fi
370
371   AC_MSG_CHECKING([whether keyserver exec-path is enabled])
372   AC_ARG_ENABLE(keyserver-path,
373     AC_HELP_STRING([--disable-keyserver-path],
374       [disable the exec-path option for keyserver helpers]),
375     [if test "$enableval" = no ; then
376        disable_keyserver_path=yes
377     fi],enableval=yes)
378   AC_MSG_RESULT($enableval)
379 fi
380
381 AC_MSG_CHECKING([whether the included zlib is requested])
382 AC_ARG_WITH(included-zlib,
383     AC_HELP_STRING([--with-included-zlib],[use the zlib code included here]),
384 [g10_force_zlib="$withval"], [g10_force_zlib=no] )
385 AC_MSG_RESULT($g10_force_zlib)
386
387 dnl
388 dnl Check for the key/uid cache size.  This can't be zero, but can be
389 dnl pretty small on embedded systems.
390 dnl
391 AC_MSG_CHECKING([for the size of the key and uid cache])
392 AC_ARG_ENABLE(key-cache,
393         AC_HELP_STRING([--enable-key-cache=SIZE],[Set key cache to SIZE (default 4096)]),,enableval=4096)
394
395 if test "$enableval" = "no"; then
396    enableval=5
397 elif test "$enableval" = "yes" || test "$enableval" = ""; then
398    enableval=4096
399 fi
400
401 changequote(,)dnl
402 key_cache_size=`echo "$enableval" | sed 's/[A-Za-z]//g'`
403 changequote([,])dnl
404
405 if test "$enableval" != "$key_cache_size" || test "$key_cache_size" -lt 5; then
406    AC_MSG_ERROR([invalid key-cache size])
407 fi
408
409 AC_MSG_RESULT($key_cache_size)
410 AC_DEFINE_UNQUOTED(PK_UID_CACHE_SIZE,$key_cache_size,[Size of the key and UID caches])
411
412 dnl
413 dnl Check whether we want to use Linux capabilities
414 dnl
415 AC_MSG_CHECKING([whether use of capabilities is requested])
416 AC_ARG_WITH(capabilities,
417     AC_HELP_STRING([--with-capabilities],
418                    [use linux capabilities [default=no]]),
419 [use_capabilities="$withval"],[use_capabilities=no])
420 AC_MSG_RESULT($use_capabilities)
421
422 # To avoid double inclusion of config.h which might happen at some
423 # places, we add the usual double inclusion protection.
424 AH_TOP([
425 #ifndef GNUPG_CONFIG_H_INCLUDED
426 #define GNUPG_CONFIG_H_INCLUDED
427 ])
428
429 AH_BOTTOM([
430 /* We didn't define endianness above, so get it from OS macros.  This
431 is intended for making fat binary builds on OS X. */
432 #if !defined(BIG_ENDIAN_HOST) && !defined(LITTLE_ENDIAN_HOST)
433 # if defined(__BIG_ENDIAN__)
434 #  define BIG_ENDIAN_HOST 1
435 # elif defined(__LITTLE_ENDIAN__)
436 #  define LITTLE_ENDIAN_HOST 1
437 # else
438 #  error "No endianness found"
439 # endif
440 #endif
441
442 #if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
443 # define EXEC_TEMPFILE_ONLY
444 #endif
445
446 /* Please note that the string version must not contain more
447    than one character because the using code assumes strlen()==1 */
448 #ifdef HAVE_DOSISH_SYSTEM
449 # define DIRSEP_C '\\'
450 # define EXTSEP_C '.'
451 # define DIRSEP_S "\\"
452 # define EXTSEP_S "."
453 # define PATHSEP_C ';'
454 # define PATHSEP_S ";"
455 #else
456 # define DIRSEP_C '/'
457 # define EXTSEP_C '.'
458 # define DIRSEP_S "/"
459 # define EXTSEP_S "."
460 # define PATHSEP_C ':'
461 # define PATHSEP_S ":"
462 #endif
463
464
465 /* For some OSes we need to use fixed strings for certain directories.  */
466 #ifdef HAVE_DRIVE_LETTERS
467 # define LOCALEDIR         "c:\\\\lib\\\\gnupg\\\\locale"
468 # define GNUPG_LIBDIR      "c:\\\\lib\\\\gnupg"
469 # define GNUPG_LIBEXECDIR  "c:\\\\lib\\\\gnupg"
470 # define GNUPG_DATADIR     "c:\\\\lib\\\\gnupg"
471 # define GNUPG_HOMEDIR     "c:\\\\gnupg"
472 #else
473 # ifdef __VMS
474 #  define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
475 # else
476 #  define GNUPG_HOMEDIR "~/.gnupg" 
477 # endif
478 #endif
479
480 /* Hack used for W32: ldap.m4 also tests for the ASCII version of
481    ldap_start_tls_s because that is the actual symbol used in the
482    library.  winldap.h redefines it to our commonly used value,
483    thus we define our usual macro here.  */
484 #ifdef HAVE_LDAP_START_TLS_SA
485 # ifndef HAVE_LDAP_START_TLS_S
486 #  define HAVE_LDAP_START_TLS_S 1
487 # endif
488 #endif
489
490 /* This is the major version number of GnuPG so that
491    source included files can test for this. */
492 #define GNUPG_MAJOR_VERSION 1
493
494 /* This is the same as VERSION, but should be overridden if the
495    platform cannot handle things like dots'.' in filenames.  Set
496    SAFE_VERSION_DOT and SAFE_VERSION_DASH to whatever SAFE_VERSION
497    uses for dots and dashes. */
498 #define SAFE_VERSION      VERSION
499 #define SAFE_VERSION_DOT  '.'
500 #define SAFE_VERSION_DASH '-'
501
502 /* We want to use our memory allocator for estream-printf.  */
503 #define _ESTREAM_PRINTF_MALLOC        xtrymalloc
504 #define _ESTREAM_PRINTF_FREE          xfree
505 #define _ESTREAM_PRINTF_EXTRA_INCLUDE "memory.h"
506
507 #endif /*GNUPG_CONFIG_H_INCLUDED*/
508 ])
509
510 AM_MAINTAINER_MODE
511
512 dnl Checks for programs.
513
514 AC_PROG_MAKE_SET
515 AM_SANITY_CHECK
516 missing_dir=`cd $ac_aux_dir && pwd`
517 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
518 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
519 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
520 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
521 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
522 AC_PROG_CC
523 AM_PROG_CC_C_O
524 AC_PROG_CPP
525 AC_PROG_RANLIB
526 AC_CHECK_TOOL(AR, ar, :)
527 AC_PATH_PROG(PERL,"perl")
528 AC_ISC_POSIX
529 AC_SYS_LARGEFILE
530 AC_PROG_INSTALL
531 AC_PROG_AWK
532 AC_CHECK_PROG(DOCBOOK_TO_MAN, docbook-to-man, yes, no)
533 AM_CONDITIONAL(HAVE_DOCBOOK_TO_MAN, test "$ac_cv_prog_DOCBOOK_TO_MAN" = yes)
534 GNUPG_CHECK_FAQPROG
535 GNUPG_CHECK_USTAR
536
537
538 # According to a comment by Marcus Brinkman in libgpg-error, the
539 # AC_PROG_CC_FOR_BUILD macro in the AC archive is broken for autoconf
540 # 2.57.  Thus we use a simply use "cc" if we are cross-compiling.
541 AC_MSG_CHECKING(for cc for build)
542 if test "$cross_compiling" = "yes"; then
543   CC_FOR_BUILD="${CC_FOR_BUILD-cc}"
544 else
545   CC_FOR_BUILD="${CC_FOR_BUILD-$CC}"
546 fi
547 AC_MSG_RESULT($CC_FOR_BUILD)
548 AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler])
549
550
551
552 MPI_OPT_FLAGS=""
553
554 have_dosish_system=no
555 need_dlopen=yes
556 case "${host}" in
557     *-mingw32*)
558         # special stuff for Windoze NT
559         ac_cv_have_dev_random=no
560         AC_DEFINE(USE_ONLY_8DOT3,1,
561                   [set this to limit filenames to the 8.3 format])
562         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
563                   [defined if we must run on a stupid file system])
564         AC_DEFINE(USE_SIMPLE_GETTEXT,1,
565                   [because the Unix gettext has too much overhead on
566                    MingW32 systems and these systems lack Posix functions,
567                    we use a simplified version of gettext])
568         AC_DEFINE(HAVE_W32_SYSTEM,1,
569                   [Defined if we run on a W32 API based system])
570         disable_keyserver_path=yes
571         have_dosish_system=yes
572         need_dlopen=no
573         try_gettext="no"
574         agent_support=no
575         use_simple_gettext=yes
576         have_w32_system=yes
577         ;;
578     i?86-emx-os2 | i?86-*-os2*emx )
579         # OS/2 with the EMX environment
580         ac_cv_have_dev_random=no
581         AC_DEFINE(HAVE_DRIVE_LETTERS)
582         have_dosish_system=yes
583         try_gettext="no"
584         agent_support=no
585         ;;
586
587     i?86-*-msdosdjgpp*)
588         # DOS with the DJGPP environment
589         ac_cv_have_dev_random=no
590         AC_DEFINE(HAVE_DRIVE_LETTERS)
591         have_dosish_system=yes
592         try_gettext="no"
593         agent_support=no
594         ;;
595
596     *-*-hpux*)
597         if test -z "$GCC" ; then
598             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
599         fi
600         ;;
601     *-dec-osf4*)
602         if test -z "$GCC" ; then
603             # Suppress all warnings
604             # to get rid of the unsigned/signed char mismatch warnings.
605             CFLAGS="$CFLAGS -w"
606         fi
607         ;;
608     *-dec-osf5*)
609         if test -z "$GCC" ; then
610             # Use the newer compiler `-msg_disable ptrmismatch1' to
611             # get rid of the unsigned/signed char mismatch warnings.
612             # Using this may hide other pointer mismatch warnings, but
613             # it at least lets other warning classes through
614             CFLAGS="$CFLAGS -msg_disable ptrmismatch1"
615         fi
616         ;;
617     m68k-atari-mint)
618         ;;
619     *)
620        ;;
621 esac
622
623 if test "$have_dosish_system" = yes; then
624    AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
625              [defined if we run on some of the PCDOS like systems 
626               (DOS, Windoze. OS/2) with special properties like
627               no file modes])
628 fi
629 AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
630
631 AM_CONDITIONAL(USE_SIMPLE_GETTEXT, test x"$use_simple_gettext" = xyes)
632 AM_CONDITIONAL(HAVE_W32_SYSTEM, test x"$have_w32_system" = xyes)
633
634 if test "$disable_keyserver_path" = yes; then
635     AC_DEFINE(DISABLE_KEYSERVER_PATH,1,
636               [define to disable exec-path for keyserver helpers])
637 fi
638
639 AC_SUBST(MPI_OPT_FLAGS)
640 GNUPG_SYS_SYMBOL_UNDERSCORE
641
642 dnl These need to go after AC_PROG_CC so that $EXEEXT is defined
643
644 AC_DEFINE_UNQUOTED(EXEEXT,"$EXEEXT",[The executable file extension, if any])
645
646 if test x"$try_hkp" = xyes ; then
647   AC_SUBST(GPGKEYS_HKP,"gpgkeys_hkp$EXEEXT")
648 fi
649
650 if test x"$try_finger" = xyes ; then
651   AC_SUBST(GPGKEYS_FINGER,"gpgkeys_finger$EXEEXT")
652 fi
653
654 dnl Must check for network library requirements before doing link tests
655 dnl for ldap, for example. If ldap libs are static (or dynamic and without
656 dnl ELF runtime link paths), then link will fail and LDAP support won't
657 dnl be detected.
658
659 AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname,
660         [NETLIBS="-lnsl $NETLIBS"]))
661 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
662         [NETLIBS="-lsocket $NETLIBS"]))
663
664 dnl Now try for the resolver functions so we can use DNS for SRV, PKA,
665 dnl and CERT.
666
667 if test x"$try_dns" = xyes ; then
668    if test x"$try_hkp" = xyes || test x"$try_http" = xyes ; then
669       AC_ARG_ENABLE(dns-srv,
670          AC_HELP_STRING([--disable-dns-srv],
671         [disable the use of DNS SRV in HKP and HTTP]),
672          use_dns_srv=$enableval,use_dns_srv=yes)
673    fi
674
675    AC_ARG_ENABLE(dns-pka,
676       AC_HELP_STRING([--disable-dns-pka],
677         [disable the use of PKA records in DNS]),
678       use_dns_pka=$enableval,use_dns_pka=yes)
679
680    AC_ARG_ENABLE(dns-cert,
681       AC_HELP_STRING([--disable-dns-cert],
682         [disable the use of CERT records in DNS]),
683       use_dns_cert=$enableval,use_dns_cert=yes)
684 fi
685
686 if test x"$use_dns_pka" = xyes || test x"$use_dns_srv" = xyes || test x"$use_dns_cert" = xyes; then
687   _dns_save_libs=$LIBS
688   LIBS=""
689   # the double underscore thing is a glibc-ism?
690   AC_SEARCH_LIBS(res_query,resolv bind socket,,
691             AC_SEARCH_LIBS(__res_query,resolv bind socket,,have_resolver=no))
692   AC_SEARCH_LIBS(dn_expand,resolv bind socket,,
693             AC_SEARCH_LIBS(__dn_expand,resolv bind socket,,have_resolver=no))
694   AC_SEARCH_LIBS(dn_skipname,resolv bind socket,,
695             AC_SEARCH_LIBS(__dn_skipname,resolv bind socket,,have_resolver=no))
696
697   if test x"$have_resolver" != xno ; then
698
699     # Make sure that the BIND 4 resolver interface is workable before
700     # enabling any code that calls it.  At some point I'll rewrite the
701     # code to use the BIND 8 resolver API.
702
703     AC_MSG_CHECKING([whether the resolver is usable])
704     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
705 #include <netinet/in.h>
706 #include <arpa/nameser.h>
707 #include <resolv.h>],
708 [[unsigned char answer[PACKETSZ]; res_query("foo.bar",C_IN,T_A,answer,PACKETSZ); dn_skipname(0,0); dn_expand(0,0,0,0,0);]])],have_resolver=yes,have_resolver=no)
709     AC_MSG_RESULT($have_resolver)
710
711     # This is Apple-specific and somewhat bizarre as they changed the
712     # define in bind 8 for some reason.
713
714     if test x"$have_resolver" != xyes ; then
715        AC_MSG_CHECKING([whether I can make the resolver usable with BIND_8_COMPAT])
716        AC_LINK_IFELSE([AC_LANG_PROGRAM([#define BIND_8_COMPAT
717 #include <sys/types.h>
718 #include <netinet/in.h>
719 #include <arpa/nameser.h>
720 #include <resolv.h>],
721 [[unsigned char answer[PACKETSZ]; res_query("foo.bar",C_IN,T_A,answer,PACKETSZ); dn_skipname(0,0); dn_expand(0,0,0,0,0);]])],[have_resolver=yes ; need_compat=yes])
722        AC_MSG_RESULT($have_resolver)
723     fi
724   fi
725
726   if test x"$have_resolver" = xyes ; then
727      DNSLIBS=$LIBS
728
729      if test x"$use_dns_srv" = xyes ; then
730         AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
731      fi
732
733      if test x"$use_dns_pka" = xyes ; then
734         AC_DEFINE(USE_DNS_PKA,1,[define to use our experimental DNS PKA])
735      fi
736
737      if test x"$use_dns_cert" = xyes ; then
738         AC_DEFINE(USE_DNS_CERT,1,[define to use DNS CERT])
739      fi
740
741      if test x"$need_compat" = xyes ; then
742         AC_DEFINE(BIND_8_COMPAT,1,[an Apple OSXism])
743      fi
744   else
745      use_dns_srv=no
746      use_dns_pka=no
747      use_dns_cert=no
748   fi
749
750   LIBS=$_dns_save_libs
751 fi
752
753 AC_SUBST(DNSLIBS)
754
755 AM_CONDITIONAL(USE_DNS_SRV, test x"$use_dns_srv" = xyes)
756
757 # Check for LDAP
758
759 if test "$try_ldap" = yes ; then
760    GNUPG_CHECK_LDAP($NETLIBS)
761 fi
762
763 # Check for curl.  We fake the curl API if libcurl isn't installed.
764 # We require 7.10 or better as we use curl_version_info().
765
766 LIBCURL_CHECK_CONFIG([yes],[7.10],,[fake_curl=yes])
767 AM_CONDITIONAL(FAKE_CURL,test x"$fake_curl" = xyes)
768
769 # Generic, for us, means curl
770
771 if test x"$try_generic" = xyes ; then
772    AC_SUBST(GPGKEYS_CURL,"gpgkeys_curl$EXEEXT")
773 fi
774
775 dnl This isn't necessarily sendmail itself, but anything that gives a
776 dnl sendmail-ish interface to the outside world.  That includes qmail,
777 dnl postfix, etc.  Basically, anything that can handle "sendmail -t".
778
779 if test "$try_mailto" = yes ; then
780   AC_ARG_WITH(mailprog,
781      AC_HELP_STRING([--with-mailprog=NAME],
782                     [use "NAME -t" for mail transport]),,with_mailprog=yes)
783
784   if test "$with_mailprog" = yes ; then
785     AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
786     if test "$ac_cv_path_SENDMAIL" ; then
787       GPGKEYS_MAILTO="gpgkeys_mailto"
788     fi
789   elif test "$with_mailprog" != no ; then
790     AC_MSG_CHECKING([for a mail transport program])
791     AC_SUBST(SENDMAIL,$with_mailprog)
792     AC_MSG_RESULT($with_mailprog)
793     GPGKEYS_MAILTO="gpgkeys_mailto"
794   fi
795 fi
796
797 AC_SUBST(GPGKEYS_MAILTO)
798
799 case "${host}" in
800     *-mingw32*)
801         PRINTABLE_OS_NAME="MingW32"
802         ;;
803     *-*-cygwin*)
804         PRINTABLE_OS_NAME="Cygwin"
805         ;;
806     i?86-emx-os2 | i?86-*-os2*emx )
807         PRINTABLE_OS_NAME="OS/2"
808         ;;
809     i?86-*-msdosdjgpp*)
810         PRINTABLE_OS_NAME="MSDOS/DJGPP"
811         try_extensions=no
812         ;;
813     *-linux*)
814         PRINTABLE_OS_NAME="GNU/Linux"
815         ;;
816     *)
817         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
818         ;;
819 esac
820 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
821                    [A human readable text with the name of the OS])
822
823
824 #
825 # 1. Set names of random devices
826 #
827 NAME_OF_DEV_RANDOM="/dev/random"
828 NAME_OF_DEV_URANDOM="/dev/urandom"
829 case "${host}" in
830     *-openbsd*)
831         NAME_OF_DEV_RANDOM="/dev/srandom"
832         NAME_OF_DEV_URANDOM="/dev/urandom"
833         ;;
834 esac
835 AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM",
836                    [defined to the name of the strong random device])
837 AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM",
838                    [defined to the name of the weaker random device])
839 AC_SUBST(MPI_OPT_FLAGS)
840
841
842 dnl Checks for libraries.
843
844 AM_PO_SUBDIRS
845 AM_GNU_GETTEXT_VERSION([0.16.1])
846 if test "$try_gettext" = yes; then
847   AM_GNU_GETTEXT(,[need-ngettext])
848   # gettext requires some extra checks.  These really should be part of
849   # the basic AM_GNU_GETTEXT macro.  TODO: move other gettext-specific
850   # function checks to here.
851   AC_CHECK_FUNCS(strchr)
852 else
853   enable_nls=no
854   USE_NLS=no
855   USE_INCLUDED_LIBINTL=no
856   BUILD_INCLUDED_LIBINTL=no
857   POSUB=po
858   AC_SUBST(USE_NLS)
859   AC_SUBST(USE_INCLUDED_LIBINTL)
860   AC_SUBST(BUILD_INCLUDED_LIBINTL)
861   AC_SUBST(POSUB)
862 fi
863
864
865 if test "$try_extensions" = yes || test x"$card_support" = xyes ; then
866   if test "$need_dlopen" = yes; then
867     _dl_save_libs=$LIBS
868     LIBS=""
869     AC_SEARCH_LIBS(dlopen,dl,found_dlopen=yes)
870     if test x"$found_dlopen" = "xyes" ; then
871       AC_DEFINE(HAVE_DL_DLOPEN,1,
872                 [Defined when the dlopen function family is available])
873       DLLIBS=$LIBS
874     else
875       if test "$try_extensions" = yes ; then
876          AC_MSG_NOTICE([dlopen not found.  Disabling extensions.])
877          try_extensions=no
878       fi
879   
880       if test "$card_support" = yes ; then
881          AC_MSG_WARN([dlopen not found.  Disabling OpenPGP card support.])
882          card_support=no
883       fi
884     fi
885     LIBS=$_dl_save_libs
886   fi
887 fi
888
889 AC_SUBST(DLLIBS)
890
891 if test "$card_support" = yes ; then
892   AC_DEFINE(ENABLE_CARD_SUPPORT,1,[Define to include OpenPGP card support])
893 fi
894
895 if test "$agent_support" = yes ; then
896   AC_DEFINE(ENABLE_AGENT_SUPPORT,1,[Define to include gpg-agent support])
897 fi
898
899 if test "$try_extensions" = yes ; then
900   AC_DEFINE(USE_DYNAMIC_LINKING,1,[Define to enable the use of extensions])
901 fi
902
903 if test "$selinux_support" = yes ; then
904   AC_DEFINE(ENABLE_SELINUX_HACKS,1,[Define to enable SELinux support])
905 fi
906
907 if test "$gnupg_use_iconv" = yes ; then
908   AC_DEFINE(USE_GNUPG_ICONV,1,[Define to use the new iconv based code])
909 fi
910
911 AM_CONDITIONAL(ENABLE_CARD_SUPPORT, test "$card_support" = yes)
912 AM_CONDITIONAL(ENABLE_AGENT_SUPPORT, test "$agent_support" = yes)
913
914 dnl Checks for header files.
915 AC_HEADER_STDC
916 AC_CHECK_HEADERS([unistd.h langinfo.h termio.h locale.h getopt.h pwd.h])
917
918 # Note that we do not check for iconv here because this is done anyway
919 # by the gettext checks and thus it allows us to disable the use of
920 # iconv by using --disable-nls.
921
922 dnl Checks for typedefs, structures, and compiler characteristics.
923 AC_C_CONST
924 AC_C_INLINE
925 AC_C_VOLATILE
926 AC_TYPE_SIZE_T
927 AC_TYPE_MODE_T
928 AC_TYPE_SIGNAL
929 AC_DECL_SYS_SIGLIST
930
931 AC_ARG_ENABLE(endian-check,
932               AC_HELP_STRING([--disable-endian-check],
933               [disable the endian check and trust the OS provided macros]),
934               endiancheck=$enableval,endiancheck=yes)
935
936 if test x"$endiancheck" = xyes ; then
937    GNUPG_CHECK_ENDIAN
938 fi
939
940 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
941 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
942 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
943 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
944 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
945
946 AC_CHECK_SIZEOF(unsigned short)
947 AC_CHECK_SIZEOF(unsigned int)
948 AC_CHECK_SIZEOF(unsigned long)
949 AC_CHECK_SIZEOF(unsigned long long)
950 AC_CHECK_SIZEOF(time_t,,[[
951 #include <stdio.h>
952 #if TIME_WITH_SYS_TIME
953 # include <sys/time.h>
954 # include <time.h>
955 #else
956 # if HAVE_SYS_TIME_H
957 #  include <sys/time.h>
958 # else
959 #  include <time.h>
960 # endif
961 #endif
962 ]])
963
964 # Ensure that we have UINT64_C before we bother to check for uint64_t
965 AC_CHECK_HEADERS([inttypes.h])
966 AC_CACHE_CHECK([for UINT64_C], [gnupg_cv_uint64_c_works],
967                AC_LINK_IFELSE(AC_LANG_PROGRAM([#include <inttypes.h>],[
968 uint64_t foo=UINT64_C(42);]),gnupg_cv_uint64_c_works=yes,gnupg_cv_uint64_c_works=no))
969
970 if test "$gnupg_cv_uint64_c_works" = "yes" ; then
971    AC_CHECK_SIZEOF(uint64_t)
972 fi
973
974 if test "$ac_cv_sizeof_unsigned_short" = "0" \
975    || test "$ac_cv_sizeof_unsigned_int" = "0" \
976    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
977     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
978 fi
979
980 dnl Do we have any 64-bit data types?
981 if test x"$use_sha512" = xyes \
982    && test "$ac_cv_sizeof_unsigned_int" != "8" \
983    && test "$ac_cv_sizeof_unsigned_long" != "8" \
984    && test "$ac_cv_sizeof_unsigned_long_long" != "8" \
985    && test x"$ac_cv_sizeof_uint64_t" != "x8"; then
986     AC_MSG_NOTICE([No 64-bit types.  Disabling SHA-384 and SHA-512.])
987     use_sha512=no
988 fi
989
990 if test x"$use_sha512" = xyes ; then
991     AC_DEFINE(USE_SHA512,1,[Define to include the SHA-384 and SHA-512 digests])
992 fi
993
994 AM_CONDITIONAL(USE_SHA512, test x"$use_sha512" = xyes)
995
996 dnl Checks for library functions.
997 AC_CHECK_DECLS(getpagesize)
998 AC_FUNC_FSEEKO
999 AC_FUNC_VPRINTF
1000 AC_FUNC_FORK
1001 AC_CHECK_FUNCS(strerror stpcpy strlwr tcgetattr strtoul mmap sysconf)
1002 AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid times unsetenv getpwnam getpwuid)
1003 AC_CHECK_FUNCS(memmove gettimeofday getrusage setrlimit clock_gettime)
1004 AC_CHECK_FUNCS(atexit raise getpagesize strftime nl_langinfo setlocale)
1005 AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask rand pipe stat getaddrinfo)
1006 AC_CHECK_FUNCS(fcntl ftruncate)
1007 AC_REPLACE_FUNCS(mkdtemp timegm isascii memrchr strsep)
1008
1009 AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
1010
1011 # See if getopt is in libiberty.  This is of course not optimal since
1012 # it might be somewhere other than libiberty, but does cover the
1013 # mingw32 case.
1014
1015 AC_CHECK_FUNC(getopt,,AC_CHECK_LIB(iberty,getopt,AC_SUBST(GETOPT,"-liberty")))
1016
1017 #
1018 # check for gethrtime and run a testprogram to see whether
1019 # it is broken.  It has been reported that some Solaris and HP UX systems 
1020 # raise an SIGILL
1021 #
1022 AC_CACHE_CHECK([for gethrtime], 
1023                [gnupg_cv_func_gethrtime],
1024                [AC_TRY_LINK([#include <sys/times.h>],[
1025                    hrtime_t tv;
1026                    tv = gethrtime();
1027                  ],
1028                  [gnupg_cv_func_gethrtime=yes],
1029                  [gnupg_cv_func_gethrtime=no])
1030                ])
1031 if test $gnupg_cv_func_gethrtime = yes; then
1032      AC_DEFINE([HAVE_GETHRTIME], 1,
1033                [Define if you have the `gethrtime(2)' function.])
1034      AC_CACHE_CHECK([whether gethrtime is broken], 
1035                [gnupg_cv_func_broken_gethrtime],
1036                [AC_TRY_RUN([
1037                    #include <sys/times.h>
1038                    int main () {
1039                    hrtime_t tv;
1040                    tv = gethrtime(); 
1041                  }
1042                  ],
1043                  [gnupg_cv_func_broken_gethrtime=no],
1044                  [gnupg_cv_func_broken_gethrtime=yes],
1045                  [gnupg_cv_func_broken_gethrtime=assume-no])
1046                 ])
1047     if test $gnupg_cv_func_broken_gethrtime = yes; then
1048       AC_DEFINE([HAVE_BROKEN_GETHRTIME], 1,
1049       [Define if `gethrtime(2)' does not work correctly i.e. issues a SIGILL.])
1050     fi
1051 fi
1052      
1053
1054 GNUPG_CHECK_MLOCK
1055 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
1056
1057 #
1058 # Prepare building of estream-printf
1059 #
1060 estream_PRINTF_INIT
1061
1062
1063 dnl
1064 dnl Check whether we can use Linux capabilities as requested
1065 dnl
1066 if test "$use_capabilities" = "yes" ; then
1067
1068 AC_MSG_WARN([[
1069 ***
1070 *** WARNING: using capabilities with GnuPG is experimental code!
1071 ***]])
1072
1073 use_capabilities=no
1074 AC_CHECK_HEADERS(sys/capability.h)
1075 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
1076   AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
1077   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
1078      AC_DEFINE(USE_CAPABILITIES,1,
1079                [define if capabilities should be used])
1080      AC_SUBST(CAPLIBS,"-lcap")
1081      use_capabilities=yes
1082   fi
1083 fi
1084 if test "$use_capabilities" = "no" ; then
1085     AC_MSG_WARN([[
1086 ***
1087 *** The use of capabilities on this system is not possible.
1088 *** You need a recent Linux kernel and some patches:
1089 ***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
1090 ***   fcap-module-990613.tar.gz     (kernel module)
1091 ***   libcap-1.92.tar.gz            (user mode library and utilities)
1092 *** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
1093 *** set (filesystems menu). Be warned: This code is *really* ALPHA.
1094 ***]])
1095 fi
1096 fi
1097
1098
1099 GNUPG_CHECK_IPC
1100 if test "$ac_cv_header_sys_shm_h" = "yes"; then
1101   AC_DEFINE(USE_SHM_COPROCESSING,1,
1102             [define if the shared memory interface should be made available])
1103 fi
1104
1105 AM_CONDITIONAL(HAVE_SHM, test "$ac_cv_header_sys_shm_h" = yes)
1106
1107 dnl
1108 dnl check whether we have a random device
1109 dnl
1110 if test "$try_dev_random" = yes ; then
1111     AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
1112     [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
1113       ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
1114     if test "$ac_cv_have_dev_random" = yes; then
1115         AC_DEFINE(HAVE_DEV_RANDOM,1,
1116                  [defined if the system supports a random device] )
1117     fi
1118 else
1119     AC_MSG_CHECKING(for random device)
1120     ac_cv_have_dev_random=no
1121     AC_MSG_RESULT(has been disabled)
1122 fi
1123
1124
1125 dnl
1126 dnl Figure out the default random module.
1127 dnl
1128 random_modules=""
1129 if test "$use_static_rnd" = default; then
1130      if test "$ac_cv_have_dev_random" = yes; then
1131         random_modules="rndlinux"
1132      else
1133          case "${host}" in
1134             *-mingw32*|*-*-cygwin*)
1135                 random_modules="rndw32"
1136                 ;;
1137             i?86-emx-os2|i?86-*-os2*emx)
1138                 random_modules="rndos2"
1139                 ;;
1140             m68k-atari-mint)
1141                 random_modules="rndatari"
1142                 ;;
1143             i?86-*-msdosdjgpp*)
1144                 :
1145                 ;;
1146             *)
1147                 random_modules="rndlinux rndegd rndunix"
1148                 AC_DEFINE(USE_ALL_RANDOM_MODULES, 1, 
1149                           [Allow to select random modules at runtime.])
1150                 ;;
1151          esac
1152      fi
1153 else
1154   if test "$use_static_rnd" = auto; then
1155      random_modules="rndlinux rndegd rndunix"
1156      AC_DEFINE(USE_ALL_RANDOM_MODULES, 1)
1157   else
1158      random_modules="rnd$use_static_rnd";
1159   fi
1160 fi
1161
1162 if test -z "$random_modules"; then
1163    AC_MSG_ERROR(no random module available)
1164 fi
1165 print_egd_warning=no
1166 for rndmod in $random_modules "" ; do
1167   case "$rndmod" in
1168     rndlinux)
1169          AC_DEFINE(USE_RNDLINUX,1, 
1170                   [Defined if the /dev/random based RNG should be used.])
1171          use_rndlinux=yes
1172          ;;
1173     rndunix)
1174          AC_DEFINE(USE_RNDUNIX,1, 
1175                   [Defined if the default Unix RNG should be used.])
1176          print_egd_warning=yes
1177          use_rndunix=yes
1178           ;;
1179     rndegd)
1180          AC_DEFINE(USE_RNDEGD,1, 
1181                   [Defined if the EGD based RNG should be used.])
1182          use_rndegd=yes
1183          ;;
1184     rndw32)
1185          AC_DEFINE(USE_RNDW32,1, 
1186                   [Defined if the Windows specific RNG should be used.])
1187          use_rndw32=yes
1188         ;;
1189    esac
1190 done
1191
1192 AM_CONDITIONAL(USE_RNDLINUX, test "$use_rndlinux" = yes)
1193 AM_CONDITIONAL(USE_RNDUNIX,  test "$use_rndunix" = yes)
1194 AM_CONDITIONAL(USE_RNDEGD,   test "$use_rndegd" = yes)
1195 AM_CONDITIONAL(USE_RNDW32,   test "$use_rndw32" = yes)
1196
1197 dnl setup assembler stuff
1198 AC_MSG_CHECKING(for mpi assembler functions)
1199 if test -f $srcdir/mpi/config.links ; then
1200     . $srcdir/mpi/config.links
1201     AC_CONFIG_LINKS("$mpi_ln_list")
1202     ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
1203     ac_cv_mpi_sflags="$mpi_sflags"
1204     ac_cv_mpi_config_done="yes"
1205     AC_MSG_RESULT(done)
1206 else
1207     AC_MSG_RESULT(failed)
1208     AC_MSG_ERROR([mpi/config.links missing!])
1209 fi
1210 MPI_EXTRA_ASM_OBJS=""
1211 show_extraasm=""
1212 if test "$ac_cv_mpi_extra_asm_modules" != ""; then
1213 for i in $ac_cv_mpi_extra_asm_modules; do
1214     show_extraasm="$show_extraasm $i"
1215     MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
1216 done
1217 fi
1218 AC_SUBST(MPI_EXTRA_ASM_OBJS)
1219 MPI_SFLAGS="$ac_cv_mpi_sflags"
1220 AC_SUBST(MPI_SFLAGS)
1221
1222 # Sanity check regex.  Tests adapted from mutt.
1223
1224 AC_MSG_CHECKING([whether regular expression support is requested])
1225 AC_ARG_ENABLE(regex,
1226   AC_HELP_STRING([--disable-regex],
1227     [do not handle regular expressions in trust signatures]),
1228   use_regex=$enableval, use_regex=yes)
1229 AC_MSG_RESULT($use_regex)
1230
1231 if test "$use_regex" = yes ; then
1232   AC_MSG_CHECKING([whether the included regex lib is requested])
1233   AC_ARG_WITH(included-regex,
1234       AC_HELP_STRING([--with-included-regex],
1235                      [use the included GNU regex library]),
1236       [gnupg_cv_included_regex="$withval"],[gnupg_cv_included_regex=no])
1237   AC_MSG_RESULT($gnupg_cv_included_regex)
1238
1239   if test $gnupg_cv_included_regex = no ; then
1240      # Does the system have regex functions at all?
1241      AC_CHECK_FUNC(regcomp,gnupg_cv_included_regex=no,
1242                            gnupg_cv_included_regex=yes)
1243   fi
1244
1245   if test $gnupg_cv_included_regex = no ; then
1246      AC_CACHE_CHECK([whether your system's regexp library is broken],
1247        [gnupg_cv_regex_broken],
1248        AC_TRY_RUN([
1249 #include <unistd.h>
1250 #include <regex.h>
1251 main() { regex_t blah ; regmatch_t p; p.rm_eo = p.rm_eo; return regcomp(&blah, "foo.*bar", REG_NOSUB) || regexec (&blah, "foobar", 0, NULL, 0); }],
1252        gnupg_cv_regex_broken=no, gnupg_cv_regex_broken=yes, gnupg_cv_regex_broken=yes))
1253
1254      if test $gnupg_cv_regex_broken = yes ; then
1255       AC_MSG_WARN(your regex is broken - using the included GNU regex instead.)
1256       gnupg_cv_included_regex=yes
1257      fi
1258   fi
1259
1260   if test $gnupg_cv_included_regex = yes; then
1261      AC_DEFINE(USE_INTERNAL_REGEX,1,[ Define if you want to use the included regex lib ])
1262   fi
1263 else
1264   AC_DEFINE(DISABLE_REGEX,1,[ Define to disable regular expression support ])
1265 fi
1266
1267 AM_CONDITIONAL(USE_INTERNAL_REGEX, test x"$gnupg_cv_included_regex" = xyes)
1268
1269 dnl Do we have zlib? Must do it here because Solaris failed
1270 dnl when compiling a conftest (due to the "-lz" from LIBS).
1271 use_local_zlib=yes
1272 if test "$g10_force_zlib" = "yes"; then
1273   :
1274 else
1275   _cppflags="${CPPFLAGS}"
1276   _ldflags="${LDFLAGS}"
1277
1278   AC_ARG_WITH(zlib,
1279      AC_HELP_STRING([--with-zlib=DIR],[use libz in DIR]),[
1280     if test -d "$withval"; then
1281       CPPFLAGS="${CPPFLAGS} -I$withval/include"
1282       LDFLAGS="${LDFLAGS} -L$withval/lib"
1283     fi
1284   ])
1285
1286   AC_CHECK_HEADER(zlib.h,
1287       AC_CHECK_LIB(z, deflateInit2_,
1288        use_local_zlib=no
1289        ZLIBS="-lz",
1290        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1291        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
1292 fi
1293
1294 if test "$use_local_zlib" = yes ; then
1295     AC_CONFIG_LINKS(zlib.h:zlib/zlib.h zconf.h:zlib/zconf.h )
1296     ZLIBS="../zlib/libzlib.a"
1297 fi
1298
1299 AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, test "$use_local_zlib" = yes)
1300
1301 if test "$use_bzip2" = yes ; then
1302   _cppflags="${CPPFLAGS}"
1303   _ldflags="${LDFLAGS}"
1304   AC_ARG_WITH(bzip2,
1305      AC_HELP_STRING([--with-bzip2=DIR],[look for bzip2 in DIR]),
1306       [
1307       if test -d "$withval" ; then
1308         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1309         LDFLAGS="${LDFLAGS} -L$withval/lib"
1310       fi
1311       ],withval="")
1312
1313 # Checking alongside stdio.h as an early version of bzip2 (1.0)
1314 # required stdio.h to be included before bzlib.h, and Solaris 9 is
1315 # woefully out of date.
1316
1317   if test "$withval" != no ; then
1318      AC_CHECK_HEADER(bzlib.h,
1319         AC_CHECK_LIB(bz2,BZ2_bzCompressInit,
1320           [
1321           have_bz2=yes
1322           ZLIBS="$ZLIBS -lbz2"
1323           AC_DEFINE(HAVE_BZIP2,1,
1324                   [Defined if the bz2 compression library is available])
1325           ],
1326           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1327           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags},[#include <stdio.h>])
1328   fi
1329 fi
1330
1331 AM_CONDITIONAL(ENABLE_BZIP2_SUPPORT,test x"$have_bz2" = "xyes")
1332 AC_SUBST(ZLIBS)
1333
1334 # libusb allows us to use the integrated CCID smartcard reader driver.
1335 # We don't need it if we don't have card support though.
1336 if test "$card_support" = yes ; then
1337    GNUPG_CHECK_LIBUSB
1338 fi
1339
1340 # Check for readline support
1341 GNUPG_CHECK_READLINE
1342
1343 # Allow users to append something to the version string without
1344 # flagging it as development version.  The user version parts is
1345 # considered everything after a dash. 
1346 if test "$development_version" != yes; then
1347   changequote(,)dnl
1348   tmp_pat='[a-zA-Z]'
1349   changequote([,])dnl
1350   if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
1351     development_version=yes
1352   fi
1353 fi
1354 if test "$development_version" = yes; then
1355     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
1356             [Defined if this is not a regular release])
1357 fi
1358
1359 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
1360
1361
1362 # add some extra libs here so that previous tests don't fail for
1363 # mysterious reasons - the final link step should bail out. 
1364 case "${host}" in
1365     *-mingw32*)
1366 dnl      NETLIBS="$NETLIBS -lwsock32"
1367         W32LIBS="-lwsock32"
1368         ;;
1369     *)
1370        ;;
1371 esac
1372
1373 AC_SUBST(NETLIBS)
1374 AC_SUBST(W32LIBS)
1375
1376 # Special options used with gcc.
1377 if test "$GCC" = yes; then
1378     # Note that it is okay to use CFLAGS here because this are just
1379     # warning options and the user should have a chance of overriding
1380     #them.
1381     if test "$USE_MAINTAINER_MODE" = "yes"; then
1382         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
1383         CFLAGS="$CFLAGS -Wformat-nonliteral"
1384     else
1385         CFLAGS="$CFLAGS -Wall"
1386     fi
1387
1388     # This is handy for debugging so the compiler doesn't rearrange
1389     # things and eliminate variables.
1390     AC_ARG_ENABLE(optimization,
1391        AC_HELP_STRING([--disable-optimization],
1392                       [disable compiler optimization]),
1393                       [if test $enableval = no ; then
1394                          CFLAGS=`echo $CFLAGS | sed 's/-O[[0-9]]//'`
1395                        fi])
1396
1397     AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign])
1398
1399     _gcc_cflags_save=$CFLAGS
1400     CFLAGS="-Wno-pointer-sign"
1401
1402     AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_psign=yes,_gcc_psign=no)
1403     AC_MSG_RESULT($_gcc_psign)
1404
1405     CFLAGS=$_gcc_cflags_save;
1406
1407     if test x"$_gcc_psign" = xyes ; then
1408        CFLAGS="$CFLAGS -Wno-pointer-sign"
1409     fi
1410 fi
1411
1412 CL_AS_NOEXECSTACK
1413
1414 if test "$print_egd_warning" = yes; then
1415   AC_MSG_WARN([[
1416 ***
1417 *** The performance of the UNIX random gatherer module is not very good
1418 *** and it does not keep the entropy pool over multiple invocations of
1419 *** GnuPG.  The suggested way to overcome this problem is to use the
1420 ***
1421 ***               Entropy Gathering Daemon (EGD)
1422 ***
1423 *** which provides a entropy source for the whole system.  It is written
1424 *** in Perl and available at the GnuPG FTP servers.  For more information
1425 *** consult the GnuPG webpages:
1426 ***
1427 ***           http://www.gnupg.org/download/#EGD
1428 ***
1429 *** You may want to run ./configure with --enable-static-rnd=egd or
1430 *** --enable-static-rnd=auto to use it.
1431 ***]])
1432 fi
1433
1434 AC_CONFIG_FILES([
1435 Makefile
1436 m4/Makefile
1437 intl/Makefile
1438 po/Makefile.in
1439 util/Makefile
1440 mpi/Makefile
1441 cipher/Makefile
1442 g10/Makefile
1443 keyserver/Makefile
1444 keyserver/gpgkeys_mailto
1445 keyserver/gpgkeys_test
1446 doc/Makefile
1447 tools/Makefile
1448 tools/gpg-zip
1449 zlib/Makefile
1450 checks/Makefile
1451 ])
1452 AC_OUTPUT
1453
1454 # Give some feedback
1455 echo
1456 echo   "                Version info:   $PACKAGE_STRING"             
1457 echo   "                Configured for: $PRINTABLE_OS_NAME ($host)"
1458 if test -n "$show_extraasm"; then
1459   echo "  Extra cpu specific functions:$show_extraasm"
1460 fi
1461 echo