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