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