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