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