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