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