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