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