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