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