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