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