* configure.ac: Add --disable-endian-check for building fat binaries
[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-cvs, bug-gnupg@gnu.org)
30 # Set development_version to yes if the minor number is odd or you
31 # feel that the default check for a development version is not
32 # sufficient.
33 development_version=no
34
35 AC_CONFIG_AUX_DIR(scripts)
36 AC_CONFIG_SRCDIR(g10/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 #if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
409 #define EXEC_TEMPFILE_ONLY
410 #endif
411
412 /* This is the major version number of GnuPG so that
413    source included files can test for this. */
414 #define GNUPG_MAJOR_VERSION 1
415
416 #include "g10defs.h"
417
418 #endif /*GNUPG_CONFIG_H_INCLUDED*/
419 ])
420
421 AM_MAINTAINER_MODE
422
423 dnl Checks for programs.
424
425 AC_PROG_MAKE_SET
426 AM_SANITY_CHECK
427 missing_dir=`cd $ac_aux_dir && pwd`
428 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
429 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
430 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
431 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
432 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
433 AC_PROG_CC
434 AC_PROG_CPP
435 AC_PROG_RANLIB
436 AC_CHECK_TOOL(AR, ar, :)
437 AC_PATH_PROG(PERL,"perl")
438 AC_ISC_POSIX
439 AC_SYS_LARGEFILE
440 AC_PROG_INSTALL
441 AC_PROG_AWK
442 AC_CHECK_PROG(DOCBOOK_TO_MAN, docbook-to-man, yes, no)
443 AM_CONDITIONAL(HAVE_DOCBOOK_TO_MAN, test "$ac_cv_prog_DOCBOOK_TO_MAN" = yes)
444 GNUPG_CHECK_FAQPROG
445 GNUPG_CHECK_DOCBOOK_TO_TEXI
446 GNUPG_CHECK_USTAR
447
448 MPI_OPT_FLAGS=""
449
450 try_gettext=yes
451 have_dosish_system=no
452 need_dlopen=yes
453 case "${host}" in
454     *-mingw32*)
455         # special stuff for Windoze NT
456         ac_cv_have_dev_random=no
457         AC_DEFINE(USE_ONLY_8DOT3,1,
458                   [set this to limit filenames to the 8.3 format])
459         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
460                   [defined if we must run on a stupid file system])
461         AC_DEFINE(USE_SIMPLE_GETTEXT,1,
462                   [because the Unix gettext has too much overhead on
463                    MingW32 systems and these systems lack Posix functions,
464                    we use a simplified version of gettext])
465         AC_DEFINE(HAVE_W32_SYSTEM,1,
466                   [Defined if we run on a W32 API based system])
467         disable_keyserver_path=yes
468         have_dosish_system=yes
469         need_dlopen=no
470         try_gettext="no"
471         agent_support=no
472         use_simple_gettext=yes
473         have_w32_system=yes
474         ;;
475     i?86-emx-os2 | i?86-*-os2*emx )
476         # OS/2 with the EMX environment
477         ac_cv_have_dev_random=no
478         AC_DEFINE(HAVE_DRIVE_LETTERS)
479         have_dosish_system=yes
480         try_gettext="no"
481         agent_support=no
482         ;;
483
484     i?86-*-msdosdjgpp*)
485         # DOS with the DJGPP environment
486         ac_cv_have_dev_random=no
487         AC_DEFINE(HAVE_DRIVE_LETTERS)
488         have_dosish_system=yes
489         try_gettext="no"
490         agent_support=no
491         ;;
492
493     *-*-hpux*)
494         if test -z "$GCC" ; then
495             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
496         fi
497         ;;
498     *-dec-osf4*)
499         if test -z "$GCC" ; then
500             # Suppress all warnings
501             # to get rid of the unsigned/signed char mismatch warnings.
502             CFLAGS="$CFLAGS -w"
503         fi
504         ;;
505     *-dec-osf5*)
506         if test -z "$GCC" ; then
507             # Use the newer compiler `-msg_disable ptrmismatch' to
508             # get rid of the unsigned/signed char mismatch warnings.
509             # Using this may hide other pointer mismatch warnings, but
510             # it at least lets other warning classes through
511             CFLAGS="$CFLAGS -msg_disable ptrmismatch"
512         fi
513         ;;
514     m68k-atari-mint)
515         ;;
516     *)
517        ;;
518 esac
519
520 if test "$have_dosish_system" = yes; then
521    AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
522              [defined if we run on some of the PCDOS like systems 
523               (DOS, Windoze. OS/2) with special properties like
524               no file modes])
525 fi
526 AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
527
528 AM_CONDITIONAL(USE_SIMPLE_GETTEXT, test x"$use_simple_gettext" = xyes)
529 AM_CONDITIONAL(HAVE_W32_SYSTEM, test x"$have_w32_system" = xyes)
530
531 if test "$disable_keyserver_path" = yes; then
532     AC_DEFINE(DISABLE_KEYSERVER_PATH,1,
533               [define to disable exec-path for keyserver helpers])
534 fi
535
536 AC_SUBST(MPI_OPT_FLAGS)
537 GNUPG_SYS_SYMBOL_UNDERSCORE
538
539 dnl These need to go after AC_PROG_CC so that $EXEEXT is defined
540
541 AC_DEFINE_UNQUOTED(EXEEXT,"$EXEEXT",[The executable file extension, if any])
542
543 if test x"$try_hkp" = xyes ; then
544   AC_SUBST(GPGKEYS_HKP,"gpgkeys_hkp$EXEEXT")
545 fi
546
547 if test x"$try_finger" = xyes ; then
548   AC_SUBST(GPGKEYS_FINGER,"gpgkeys_finger$EXEEXT")
549 fi
550
551 dnl Must check for network library requirements before doing link tests
552 dnl for ldap, for example. If ldap libs are static (or dynamic and without
553 dnl ELF runtime link paths), then link will fail and LDAP support won't
554 dnl be detected.
555
556 AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname,
557         [NETLIBS="-lnsl $NETLIBS"]))
558 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
559         [NETLIBS="-lsocket $NETLIBS"]))
560
561 dnl Now try for the resolver functions so we can use DNS for SRV, PKA,
562 dnl and CERT.
563
564 if test x"$try_hkp" = xyes || test x"$try_http" = xyes ; then
565    AC_ARG_ENABLE(dns-srv,
566       AC_HELP_STRING([--disable-dns-srv],
567         [disable the use of DNS SRV in HKP and HTTP]),
568       use_dns_srv=$enableval,use_dns_srv=yes)
569 fi
570
571 AC_ARG_ENABLE(dns-pka,
572    AC_HELP_STRING([--disable-dns-pka],
573         [disable the use of PKA records in DNS]),
574    use_dns_pka=$enableval,use_dns_pka=yes)
575
576 AC_ARG_ENABLE(dns-cert,
577    AC_HELP_STRING([--disable-dns-cert],
578         [disable the use of CERT records in DNS]),
579    use_dns_cert=$enableval,use_dns_cert=yes)
580
581 if test x"$use_dns_pka" = xyes || test x"$use_dns_srv" = xyes || test x"$use_dns_cert" = xyes; then
582   _srv_save_libs=$LIBS
583   LIBS=""
584   # the double underscore thing is a glibc-ism?
585   AC_SEARCH_LIBS(res_query,resolv bind,,
586                  AC_SEARCH_LIBS(__res_query,resolv bind,,use_dns_srv=no))
587   AC_SEARCH_LIBS(dn_expand,resolv bind,,
588                  AC_SEARCH_LIBS(__dn_expand,resolv bind,,use_dns_srv=no))
589   AC_SEARCH_LIBS(dn_skipname,resolv bind,,
590                  AC_SEARCH_LIBS(__dn_skipname,resolv bind,,use_dns_srv=no))
591
592   # Make sure that the BIND 4 resolver interface is workable before
593   # enabling any code that calls it.  At some point I'll rewrite the
594   # code to use the BIND 8 resolver API.
595
596   AC_MSG_CHECKING([whether the resolver is usable])
597   AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
598 #include <netinet/in.h>
599 #include <arpa/nameser.h>
600 #include <resolv.h>],
601 [[unsigned char answer[PACKETSZ]; res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);]])],have_resolver=yes,have_resolver=no)
602   AC_MSG_RESULT($have_resolver)
603
604 # This is Apple-specific and somewhat bizarre as they changed the
605 # define in bind 8 for some reason.
606
607   if test x"$have_resolver" != xyes ; then
608     AC_MSG_CHECKING([whether I can make the resolver usable with BIND_8_COMPAT])
609     AC_LINK_IFELSE([AC_LANG_PROGRAM([#define BIND_8_COMPAT
610 #include <sys/types.h>
611 #include <netinet/in.h>
612 #include <arpa/nameser.h>
613 #include <resolv.h>],
614 [[unsigned char answer[PACKETSZ]; res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);]])],[have_resolver=yes ; need_compat=yes])
615     AC_MSG_RESULT($have_resolver)
616   fi
617
618   if test x"$have_resolver" = xyes ; then
619      SRVLIBS=$LIBS
620
621      if test x"$use_dns_srv" = xyes ; then
622         AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
623      fi
624
625      if test x"$use_dns_pka" = xyes ; then
626         AC_DEFINE(USE_DNS_PKA,1,[define to use our experimental DNS PKA])
627      fi
628
629      if test x"$use_dns_cert" = xyes ; then
630         AC_DEFINE(USE_DNS_CERT,1,[define to use DNS CERT])
631      fi
632
633      if test x"$need_compat" = xyes ; then
634         AC_DEFINE(BIND_8_COMPAT,1,[an Appleism])
635      fi
636   else
637      use_dns_srv=no
638      use_dns_pka=no
639      use_dns_cert=no
640   fi
641
642   LIBS=$_srv_save_libs
643 fi
644
645 AC_SUBST(SRVLIBS)
646
647 AM_CONDITIONAL(USE_DNS_SRV, test x"$use_dns_srv" = xyes)
648
649 # Check for LDAP
650
651 if test "$try_ldap" = yes ; then
652    GNUPG_CHECK_LDAP($NETLIBS)
653 fi
654
655 # Which keyserver helpers are we building?
656
657 AC_ARG_ENABLE(old-keyserver-helpers,
658    AC_HELP_STRING([--enable-old-keyserver-helpers],[enable old keyserver helpers]),old_ks=$enableval,old_ks=no)
659
660 if test "$old_ks" = yes ; then
661    AC_SUBST(GPGKEYS_HTTP,"gpgkeys_http$EXEEXT")
662 else
663    LIBCURL_CHECK_CONFIG([yes],,[with_curl=yes],[fake_curl=yes])
664    AC_SUBST(GPGKEYS_CURL,"gpgkeys_curl$EXEEXT")
665 fi
666
667 AM_CONDITIONAL(FAKE_CURL,test x"$fake_curl" = xyes)
668 AM_CONDITIONAL(WITH_CURL,test x"$with_curl" = xyes || test x"$fake_curl" = xyes)
669
670 if test x"$fake_curl" = xyes ; then
671    AC_DEFINE(FAKE_CURL,1,[define to fake the libcurl API internally])
672 fi
673
674 dnl This isn't necessarily sendmail itself, but anything that gives a
675 dnl sendmail-ish interface to the outside world.  That includes qmail,
676 dnl postfix, etc.  Basically, anything that can handle "sendmail -t".
677
678 if test "$try_mailto" = yes ; then
679   AC_ARG_WITH(mailprog,[  --with-mailprog=NAME    use "NAME -t" for mail transport],,with_mailprog=yes)
680
681   if test "$with_mailprog" = yes ; then
682     AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
683     if test "$ac_cv_path_SENDMAIL" ; then
684       GPGKEYS_MAILTO="gpgkeys_mailto"
685     fi
686   elif test "$with_mailprog" != no ; then
687     AC_MSG_CHECKING([for a mail transport program])
688     AC_SUBST(SENDMAIL,$with_mailprog)
689     AC_MSG_RESULT($with_mailprog)
690     GPGKEYS_MAILTO="gpgkeys_mailto"
691   fi
692 fi
693
694 AC_SUBST(GPGKEYS_MAILTO)
695
696 case "${host}" in
697     *-mingw32*)
698         PRINTABLE_OS_NAME="MingW32"
699         ;;
700     *-*-cygwin*)
701         PRINTABLE_OS_NAME="Cygwin"
702         ;;
703     i?86-emx-os2 | i?86-*-os2*emx )
704         PRINTABLE_OS_NAME="OS/2"
705         ;;
706     i?86-*-msdosdjgpp*)
707         PRINTABLE_OS_NAME="MSDOS/DJGPP"
708         try_extensions=no
709         ;;
710     *-linux*)
711         PRINTABLE_OS_NAME="GNU/Linux"
712         ;;
713     *)
714         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
715         ;;
716 esac
717 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
718                    [A human readable text with the name of the OS])
719
720
721 #
722 # 1. Set names of random devices
723 #
724 NAME_OF_DEV_RANDOM="/dev/random"
725 NAME_OF_DEV_URANDOM="/dev/urandom"
726 case "${host}" in
727     *-openbsd*)
728         NAME_OF_DEV_RANDOM="/dev/srandom"
729         NAME_OF_DEV_URANDOM="/dev/urandom"
730         ;;
731 esac
732 AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM",
733                    [defined to the name of the strong random device])
734 AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM",
735                    [defined to the name of the weaker random device])
736 AC_SUBST(MPI_OPT_FLAGS)
737
738
739 dnl Checks for libraries.
740
741 AM_GNU_GETTEXT_VERSION(0.14.1)
742 if test "$try_gettext" = yes; then
743   AM_GNU_GETTEXT(,[need-ngettext])
744
745   # gettext requires some extra checks.  These really should be part of
746   # the basic AM_GNU_GETTEXT macro.  TODO: move other gettext-specific
747   # function checks to here.
748
749   AC_CHECK_FUNCS(strchr)
750 else
751   USE_NLS=no
752   USE_INCLUDED_LIBINTL=no
753   BUILD_INCLUDED_LIBINTL=no
754   AC_SUBST(USE_NLS)
755   AC_SUBST(USE_INCLUDED_LIBINTL)
756   AC_SUBST(BUILD_INCLUDED_LIBINTL)
757   AM_PO_SUBDIRS
758 fi
759
760 if test "$try_extensions" = yes || test x"$card_support" = xyes ; then
761   if test "$need_dlopen" = yes; then
762     _dl_save_libs=$LIBS
763     LIBS=""
764     AC_SEARCH_LIBS(dlopen,dl,found_dlopen=yes)
765     if test x"$found_dlopen" = "xyes" ; then
766       AC_DEFINE(HAVE_DL_DLOPEN,1,
767                 [Defined when the dlopen function family is available])
768       DLLIBS=$LIBS
769     else
770       if test "$try_extensions" = yes ; then
771          AC_MSG_NOTICE([dlopen not found.  Disabling extensions.])
772          try_extensions=no
773       fi
774   
775       if test "$card_support" = yes ; then
776          AC_MSG_WARN([dlopen not found.  Disabling OpenPGP card support.])
777          card_support=no
778       fi
779     fi
780     LIBS=$_dl_save_libs
781   fi
782 fi
783
784 AC_SUBST(DLLIBS)
785
786 if test "$card_support" = yes ; then
787   AC_DEFINE(ENABLE_CARD_SUPPORT,1,[Define to include OpenPGP card support])
788 fi
789
790 if test "$agent_support" = yes ; then
791   AC_DEFINE(ENABLE_AGENT_SUPPORT,1,[Define to include gpg-agent support])
792 fi
793
794 if test "$try_extensions" = yes ; then
795   AC_DEFINE(USE_DYNAMIC_LINKING,1,[Define to enable the use of extensions])
796 fi
797
798 if test "$selinux_support" = yes ; then
799   AC_DEFINE(ENABLE_SELINUX_HACKS,1,[Define to enable SELinux support])
800 fi
801
802 if test "$gnupg_use_iconv" = yes ; then
803   AC_DEFINE(USE_GNUPG_ICONV,1,[Define to use the new iconv based code])
804 fi
805
806 AM_CONDITIONAL(ENABLE_CARD_SUPPORT, test "$card_support" = yes)
807 AM_CONDITIONAL(ENABLE_AGENT_SUPPORT, test "$agent_support" = yes)
808
809 dnl Checks for header files.
810 AC_HEADER_STDC
811 AC_CHECK_HEADERS([unistd.h langinfo.h termio.h locale.h getopt.h pwd.h])
812
813 # Note that we do not check for iconv here because this is done anyway
814 # by the gettext checks and thus it allows us to disable the use of
815 # iconv by using --disable-nls.
816
817 dnl Checks for typedefs, structures, and compiler characteristics.
818 AC_C_CONST
819 AC_C_INLINE
820 AC_C_VOLATILE
821 AC_TYPE_SIZE_T
822 AC_TYPE_MODE_T
823 AC_TYPE_SIGNAL
824 AC_DECL_SYS_SIGLIST
825
826 AC_ARG_ENABLE(endian-check,
827               AC_HELP_STRING([--disable-endian-check],[disable the endian check and trust the OS provided macros]),
828               endiancheck=$enableval,endiancheck=yes)
829
830 if test x"$endiancheck" = xno ; then
831    # don't do an endian check so we can build universal ("fat")
832    # binaries on OS X.
833    AC_DEFINE_UNQUOTED(LITTLE_ENDIAN_HOST,__LITTLE_ENDIAN__)
834    AC_DEFINE_UNQUOTED(BIG_ENDIAN_HOST,__BIG_ENDIAN__)
835 else
836    GNUPG_CHECK_ENDIAN
837 fi
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 AC_CHECK_HEADERS([inttypes.h])
852 AC_CACHE_CHECK([for UINT64_C], [gnupg_cv_uint64_c_works],
853                AC_LINK_IFELSE(AC_LANG_PROGRAM([#include <inttypes.h>],[
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 x"$use_sha512" = xyes \
868    && test "$ac_cv_sizeof_unsigned_int" != "8" \
869    && test "$ac_cv_sizeof_unsigned_long" != "8" \
870    && test "$ac_cv_sizeof_unsigned_long_long" != "8" \
871    && test x"$ac_cv_sizeof_uint64_t" != "x8"; then
872     AC_MSG_NOTICE([No 64-bit types.  Disabling SHA-384 and SHA-512.])
873     use_sha512=no
874 fi
875
876 if test x"$use_sha512" = xyes ; then
877     AC_DEFINE(USE_SHA512,1,[Define to include the SHA-384 and SHA-512 digests])
878 fi
879
880 AM_CONDITIONAL(USE_SHA512, test x"$use_sha512" = xyes)
881
882 dnl Checks for library functions.
883 AC_CHECK_DECLS(getpagesize)
884 AC_FUNC_FSEEKO
885 AC_FUNC_VPRINTF
886 AC_FUNC_FORK
887 AC_CHECK_FUNCS(strerror stpcpy strsep strlwr tcgetattr strtoul mmap)
888 AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid times unsetenv getpwnam getpwuid)
889 AC_CHECK_FUNCS(memmove gettimeofday getrusage setrlimit clock_gettime)
890 AC_CHECK_FUNCS(atexit raise getpagesize strftime nl_langinfo setlocale)
891 AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask rand pipe stat getaddrinfo)
892 AC_CHECK_FUNCS(fcntl ftruncate)
893 AC_REPLACE_FUNCS(mkdtemp timegm isascii memrchr)
894
895 AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
896
897 # See if getopt is in libiberty.  This is of course not optimal since
898 # it might be somewhere other than libiberty, but does cover the
899 # mingw32 case.
900
901 AC_CHECK_FUNC(getopt,,AC_CHECK_LIB(iberty,getopt,AC_SUBST(GETOPT,"-liberty")))
902
903 #
904 # check for gethrtime and run a testprogram to see whether
905 # it is broken.  It has been reported that some Solaris and HP UX systems 
906 # raise an SIGILL
907 #
908 AC_CACHE_CHECK([for gethrtime], 
909                [gnupg_cv_func_gethrtime],
910                [AC_TRY_LINK([#include <sys/times.h>],[
911                    hrtime_t tv;
912                    tv = gethrtime();
913                  ],
914                  [gnupg_cv_func_gethrtime=yes],
915                  [gnupg_cv_func_gethrtime=no])
916                ])
917 if test $gnupg_cv_func_gethrtime = yes; then
918      AC_DEFINE([HAVE_GETHRTIME], 1,
919                [Define if you have the `gethrtime(2)' function.])
920      AC_CACHE_CHECK([whether gethrtime is broken], 
921                [gnupg_cv_func_broken_gethrtime],
922                [AC_TRY_RUN([
923                    #include <sys/times.h>
924                    int main () {
925                    hrtime_t tv;
926                    tv = gethrtime(); 
927                  }
928                  ],
929                  [gnupg_cv_func_broken_gethrtime=no],
930                  [gnupg_cv_func_broken_gethrtime=yes],
931                  [gnupg_cv_func_broken_gethrtime=assume-no])
932                 ])
933     if test $gnupg_cv_func_broken_gethrtime = yes; then
934       AC_DEFINE([HAVE_BROKEN_GETHRTIME], 1,
935       [Define if `gethrtime(2)' does not work correctly i.e. issues a SIGILL.])
936     fi
937 fi
938      
939
940 GNUPG_CHECK_MLOCK
941 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
942
943 dnl
944 dnl Check whether we can use Linux capabilities as requested
945 dnl
946 if test "$use_capabilities" = "yes" ; then
947
948 AC_MSG_WARN([[
949 ***
950 *** WARNING: using capabilities with GnuPG is experimental code!
951 ***]])
952
953 use_capabilities=no
954 AC_CHECK_HEADERS(sys/capability.h)
955 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
956   AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
957   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
958      AC_DEFINE(USE_CAPABILITIES,1,
959                [define if capabilities should be used])
960      AC_SUBST(CAPLIBS,"-lcap")
961      use_capabilities=yes
962   fi
963 fi
964 if test "$use_capabilities" = "no" ; then
965     AC_MSG_WARN([[
966 ***
967 *** The use of capabilities on this system is not possible.
968 *** You need a recent Linux kernel and some patches:
969 ***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
970 ***   fcap-module-990613.tar.gz     (kernel module)
971 ***   libcap-1.92.tar.gz            (user mode library and utilities)
972 *** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
973 *** set (filesystems menu). Be warned: This code is *really* ALPHA.
974 ***]])
975 fi
976 fi
977
978
979 GNUPG_CHECK_IPC
980 if test "$ac_cv_header_sys_shm_h" = "yes"; then
981   AC_DEFINE(USE_SHM_COPROCESSING,1,
982             [define if the shared memory interface should be made available])
983 fi
984
985 dnl
986 dnl check whether we have a random device
987 dnl
988 if test "$try_dev_random" = yes ; then
989     AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
990     [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
991       ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
992     if test "$ac_cv_have_dev_random" = yes; then
993         AC_DEFINE(HAVE_DEV_RANDOM,1,
994                  [defined if the system supports a random device] )
995     fi
996 else
997     AC_MSG_CHECKING(for random device)
998     ac_cv_have_dev_random=no
999     AC_MSG_RESULT(has been disabled)
1000 fi
1001
1002
1003 dnl
1004 dnl Figure out the default random module.
1005 dnl
1006 random_modules=""
1007 if test "$use_static_rnd" = default; then
1008      if test "$ac_cv_have_dev_random" = yes; then
1009         random_modules="rndlinux"
1010      else
1011          case "${host}" in
1012             *-mingw32*|*-*-cygwin*)
1013                 random_modules="rndw32"
1014                 ;;
1015             i?86-emx-os2|i?86-*-os2*emx)
1016                 random_modules="rndos2"
1017                 ;;
1018             m68k-atari-mint)
1019                 random_modules="rndatari"
1020                 ;;
1021             i?86-*-msdosdjgpp*)
1022                 :
1023                 ;;
1024             *)
1025                 random_modules="rndlinux rndegd rndunix"
1026                 AC_DEFINE(USE_ALL_RANDOM_MODULES, 1, 
1027                           [Allow to select random modules at runtime.])
1028                 ;;
1029          esac
1030      fi
1031 else
1032   if test "$use_static_rnd" = auto; then
1033      random_modules="rndlinux rndegd rndunix"
1034      AC_DEFINE(USE_ALL_RANDOM_MODULES, 1)
1035   else
1036      random_modules="rnd$use_static_rnd";
1037   fi
1038 fi
1039
1040 if test -z "$random_modules"; then
1041    AC_MSG_ERROR(no random module available)
1042 fi
1043 print_egd_warning=no
1044 for rndmod in $random_modules "" ; do
1045   case "$rndmod" in
1046     rndlinux)
1047          AC_DEFINE(USE_RNDLINUX,1, 
1048                   [Defined if the /dev/random based RNG should be used.])
1049          use_rndlinux=yes
1050          ;;
1051     rndunix)
1052          AC_DEFINE(USE_RNDUNIX,1, 
1053                   [Defined if the default Unix RNG should be used.])
1054          print_egd_warning=yes
1055          use_rndunix=yes
1056           ;;
1057     rndegd)
1058          AC_DEFINE(USE_RNDEGD,1, 
1059                   [Defined if the EGD based RNG should be used.])
1060          use_rndegd=yes
1061          ;;
1062     rndw32)
1063          AC_DEFINE(USE_RNDW32,1, 
1064                   [Defined if the Windows specific RNG should be used.])
1065          use_rndw32=yes
1066         ;;
1067    esac
1068 done
1069
1070 AM_CONDITIONAL(USE_RNDLINUX, test "$use_rndlinux" = yes)
1071 AM_CONDITIONAL(USE_RNDUNIX,  test "$use_rndunix" = yes)
1072 AM_CONDITIONAL(USE_RNDEGD,   test "$use_rndegd" = yes)
1073 AM_CONDITIONAL(USE_RNDW32,   test "$use_rndw32" = yes)
1074
1075 dnl setup assembler stuff
1076 AC_MSG_CHECKING(for mpi assembler functions)
1077 if test -f $srcdir/mpi/config.links ; then
1078     . $srcdir/mpi/config.links
1079     AC_CONFIG_LINKS("$mpi_ln_list")
1080     ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
1081     ac_cv_mpi_sflags="$mpi_sflags"
1082     ac_cv_mpi_config_done="yes"
1083     AC_MSG_RESULT(done)
1084 else
1085     AC_MSG_RESULT(failed)
1086     AC_MSG_ERROR([mpi/config.links missing!])
1087 fi
1088 MPI_EXTRA_ASM_OBJS=""
1089 show_extraasm=""
1090 if test "$ac_cv_mpi_extra_asm_modules" != ""; then
1091 for i in $ac_cv_mpi_extra_asm_modules; do
1092     show_extraasm="$show_extraasm $i"
1093     MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
1094 done
1095 fi
1096 AC_SUBST(MPI_EXTRA_ASM_OBJS)
1097 MPI_SFLAGS="$ac_cv_mpi_sflags"
1098 AC_SUBST(MPI_SFLAGS)
1099
1100 # Sanity check regex.  Tests adapted from mutt.
1101
1102 AC_MSG_CHECKING([whether regular expression support is requested])
1103 AC_ARG_ENABLE(regex,
1104   AC_HELP_STRING([--disable-regex],
1105     [do not handle regular expressions in trust signatures]),
1106   use_regex=$enableval, use_regex=yes)
1107 AC_MSG_RESULT($use_regex)
1108
1109 if test "$use_regex" = yes ; then
1110   AC_MSG_CHECKING([whether the included regex lib is requested])
1111   AC_ARG_WITH(included-regex,
1112       [  --with-included-regex   use the included GNU regex library],
1113       [gnupg_cv_included_regex="$withval"],[gnupg_cv_included_regex=no])
1114   AC_MSG_RESULT($gnupg_cv_included_regex)
1115
1116   if test $gnupg_cv_included_regex = no ; then
1117      # Does the system have regex functions at all?
1118      AC_CHECK_FUNC(regcomp,gnupg_cv_included_regex=no,
1119                            gnupg_cv_included_regex=yes)
1120   fi
1121
1122   if test $gnupg_cv_included_regex = no ; then
1123      AC_CACHE_CHECK([whether your system's regexp library is broken],
1124        [gnupg_cv_regex_broken],
1125        AC_TRY_RUN([
1126 #include <unistd.h>
1127 #include <regex.h>
1128 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); }],
1129        gnupg_cv_regex_broken=no, gnupg_cv_regex_broken=yes, gnupg_cv_regex_broken=yes))
1130
1131      if test $gnupg_cv_regex_broken = yes ; then
1132       AC_MSG_WARN(your regex is broken - using the included GNU regex instead.)
1133       gnupg_cv_included_regex=yes
1134      fi
1135   fi
1136
1137   if test $gnupg_cv_included_regex = yes; then
1138      AC_DEFINE(USE_INTERNAL_REGEX,1,[ Define if you want to use the included regex lib ])
1139   fi
1140 else
1141   AC_DEFINE(DISABLE_REGEX,1,[ Define to disable regular expression support ])
1142 fi
1143
1144 AM_CONDITIONAL(USE_INTERNAL_REGEX, test x"$gnupg_cv_included_regex" = xyes)
1145
1146 dnl Do we have zlib? Must do it here because Solaris failed
1147 dnl when compiling a conftest (due to the "-lz" from LIBS).
1148 use_local_zlib=yes
1149 if test "$g10_force_zlib" = "yes"; then
1150   :
1151 else
1152   _cppflags="${CPPFLAGS}"
1153   _ldflags="${LDFLAGS}"
1154
1155   AC_ARG_WITH(zlib,
1156   [  --with-zlib=DIR         use libz in DIR],[
1157     if test -d "$withval"; then
1158       CPPFLAGS="${CPPFLAGS} -I$withval/include"
1159       LDFLAGS="${LDFLAGS} -L$withval/lib"
1160     fi
1161   ])
1162
1163   AC_CHECK_HEADER(zlib.h,
1164       AC_CHECK_LIB(z, deflateInit2_,
1165        use_local_zlib=no
1166        ZLIBS="-lz",
1167        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1168        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
1169 fi
1170
1171 if test "$use_local_zlib" = yes ; then
1172     AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, true)
1173     AC_CONFIG_LINKS(zlib.h:zlib/zlib.h zconf.h:zlib/zconf.h )
1174     ZLIBS="../zlib/libzlib.a"
1175 else
1176     AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, false)
1177 fi
1178
1179 if test "$use_bzip2" = yes ; then
1180   _cppflags="${CPPFLAGS}"
1181   _ldflags="${LDFLAGS}"
1182   AC_ARG_WITH(bzip2,
1183      AC_HELP_STRING([--with-bzip2=DIR],[look for bzip2 in DIR]),
1184       [
1185       if test -d "$withval" ; then
1186         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1187         LDFLAGS="${LDFLAGS} -L$withval/lib"
1188       fi
1189       ],withval="")
1190
1191 # Checking alongside stdio.h as an early version of bzip2 (1.0)
1192 # required stdio.h to be included before bzlib.h, and Solaris 9 is
1193 # woefully out of date.
1194
1195   if test "$withval" != no ; then
1196      AC_CHECK_HEADER(bzlib.h,
1197         AC_CHECK_LIB(bz2,BZ2_bzCompressInit,
1198           [
1199           have_bz2=yes
1200           ZLIBS="$ZLIBS -lbz2"
1201           AC_DEFINE(HAVE_BZIP2,1,
1202                   [Defined if the bz2 compression library is available])
1203           ],
1204           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1205           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags},[#include <stdio.h>])
1206   fi
1207 fi
1208
1209 AM_CONDITIONAL(ENABLE_BZIP2_SUPPORT,test x"$have_bz2" = "xyes")
1210 AC_SUBST(ZLIBS)
1211
1212 # libusb allows us to use the integrated CCID smartcard reader driver.
1213 GNUPG_CHECK_LIBUSB
1214
1215 # Check for readline support
1216 GNUPG_CHECK_READLINE
1217
1218 # Allow users to append something to the version string without
1219 # flagging it as development version.  The user version parts is
1220 # considered everything after a dash. 
1221 if test "$development_version" != yes; then
1222   changequote(,)dnl
1223   tmp_pat='[a-zA-Z]'
1224   changequote([,])dnl
1225   if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
1226     development_version=yes
1227   fi
1228 fi
1229 if test "$development_version" = yes; then
1230     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
1231             [Defined if this is not a regular release])
1232 fi
1233
1234 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
1235
1236
1237 # add some extra libs here so that previous tests don't fail for
1238 # mysterious reasons - the final link step should bail out. 
1239 case "${host}" in
1240     *-mingw32*)
1241 dnl      NETLIBS="$NETLIBS -lwsock32"
1242         W32LIBS="-lwsock32"
1243         ;;
1244     *)
1245        ;;
1246 esac
1247
1248 AC_SUBST(NETLIBS)
1249 AC_SUBST(W32LIBS)
1250
1251 # Special options used with gcc.
1252 if test "$GCC" = yes; then
1253     # Note that it is okay to use CFLAGS here because this are just
1254     # warning options and the user should have a chance of overriding
1255     #them.
1256     if test "$USE_MAINTAINER_MODE" = "yes"; then
1257         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
1258         CFLAGS="$CFLAGS -Wformat-nonliteral"
1259     else
1260         CFLAGS="$CFLAGS -Wall"
1261     fi
1262
1263     AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign])
1264
1265     _gcc_cflags_save=$CFLAGS
1266     CFLAGS="-Wno-pointer-sign"
1267
1268     AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_psign=yes,_gcc_psign=no)
1269     AC_MSG_RESULT($_gcc_psign)
1270
1271     CFLAGS=$_gcc_cflags_save;
1272
1273     if test x"$_gcc_psign" = xyes ; then
1274        CFLAGS="$CFLAGS -Wno-pointer-sign"
1275     fi
1276
1277     # Non exec stack hack.  Fixme: Write a test to check whether as
1278     # can cope with it and use the enable-noexecstack option only to
1279     # disable it in case it is required on sime platforms.
1280     if test "$noexecstack_support" = yes; then
1281         NOEXECSTACK_FLAGS="-Wa,--noexecstack"
1282     fi
1283 fi
1284 AC_SUBST(NOEXECSTACK_FLAGS)
1285
1286
1287 if test "$print_egd_warning" = yes; then
1288   AC_MSG_WARN([[
1289 ***
1290 *** The performance of the UNIX random gatherer module is not very good
1291 *** and it does not keep the entropy pool over multiple invocations of
1292 *** GnuPG.  The suggested way to overcome this problem is to use the
1293 ***
1294 ***               Entropy Gathering Daemon (EGD)
1295 ***
1296 *** which provides a entropy source for the whole system.  It is written
1297 *** in Perl and available at the GnuPG FTP servers.  For more information
1298 *** consult the GnuPG webpages:
1299 ***
1300 ***           http://www.gnupg.org/download/#EGD
1301 ***
1302 *** You may want to run ./configure with --enable-static-rnd=egd or
1303 *** --enable-static-rnd=auto to use it.
1304 ***]])
1305 fi
1306
1307 # Note the \\\\ for backslashes.  Autoconf eats one layer, leaving \\
1308
1309 AC_CONFIG_COMMANDS(g10defs.h,[[
1310 cat >g10defs.tmp <<G10EOF
1311 /* Generated automatically by configure */
1312 #ifdef HAVE_DRIVE_LETTERS
1313 #define G10_LOCALEDIR     "c:\\\\lib\\\\gnupg\\\\locale"
1314 #define GNUPG_LIBDIR      "c:\\\\lib\\\\gnupg"
1315 #define GNUPG_LIBEXECDIR  "c:\\\\lib\\\\gnupg"
1316 #define GNUPG_DATADIR     "c:\\\\lib\\\\gnupg"
1317 #define GNUPG_HOMEDIR     "c:\\\\gnupg"
1318 #else
1319 #define G10_LOCALEDIR     "${datadir}/locale"
1320 #define GNUPG_LIBDIR      "${libdir}/gnupg"
1321 #define GNUPG_DATADIR     "${datadir}/gnupg"
1322 #ifdef __VMS
1323 #define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
1324 #else
1325 #define GNUPG_HOMEDIR "~/.gnupg" 
1326 #endif
1327 #endif
1328 /* those are here to be redefined by handcrafted g10defs.h.
1329    Please note that the string version must not contain more
1330    than one character because the using code assumes strlen()==1 */
1331 #ifdef HAVE_DOSISH_SYSTEM
1332 #define DIRSEP_C '\\\\'
1333 #define EXTSEP_C '.'
1334 #define DIRSEP_S "\\\\"
1335 #define EXTSEP_S "."
1336 #define PATHSEP_C ';'
1337 #define PATHSEP_S ";"
1338 #else
1339 #define DIRSEP_C '/'
1340 #define EXTSEP_C '.'
1341 #define DIRSEP_S "/"
1342 #define EXTSEP_S "."
1343 #define PATHSEP_C ':'
1344 #define PATHSEP_S ":"
1345 #endif
1346 /* This is the same as VERSION, but should be overridden if the
1347    platform cannot handle things like dots'.' in filenames.  Set
1348    SAFE_VERSION_DOT and SAFE_VERSION_DASH to whatever SAFE_VERSION
1349    uses for dots and dashes. */
1350 #define SAFE_VERSION      VERSION
1351 #define SAFE_VERSION_DOT  '.'
1352 #define SAFE_VERSION_DASH '-'
1353 G10EOF
1354 cat mpi/mpi-asm-defs.h >>g10defs.tmp 
1355 if cmp -s g10defs.h g10defs.tmp 2>/dev/null; then
1356     echo "g10defs.h is unchanged"
1357     rm -f g10defs.tmp
1358 else
1359     rm -f g10defs.h
1360     mv g10defs.tmp g10defs.h
1361     echo "g10defs.h created"
1362 fi
1363 ]],[[
1364 prefix=$prefix
1365 exec_prefix=$exec_prefix
1366 libdir=$libdir
1367 libexecdir=$libexecdir
1368 datadir=$datadir
1369 DATADIRNAME=$DATADIRNAME
1370 ]])
1371
1372
1373 AC_CONFIG_FILES([
1374 Makefile
1375 m4/Makefile
1376 intl/Makefile
1377 po/Makefile.in
1378 util/Makefile
1379 mpi/Makefile
1380 cipher/Makefile
1381 g10/Makefile
1382 keyserver/Makefile
1383 keyserver/gpgkeys_mailto
1384 keyserver/gpgkeys_test
1385 doc/Makefile
1386 tools/Makefile
1387 tools/gpg-zip
1388 zlib/Makefile
1389 checks/Makefile
1390 ])
1391 AC_OUTPUT
1392
1393 # Give some feedback
1394 echo
1395 echo   "                Configured for: $PRINTABLE_OS_NAME ($host)"
1396 if test -n "$show_extraasm"; then
1397   echo "  Extra cpu specific functions:$show_extraasm"
1398 fi
1399 echo