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