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