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