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