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