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