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