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