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