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