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