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