Preparing 1.4.7
[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.7])
31 m4_define([my_issvn], [no])
32
33 m4_define([svn_revision], m4_esyscmd([echo -n $((svn info 2>/dev/null \
34           || echo 'Revision: 0')|sed -n '/^Revision:/ s/[^0-9]//gp'|head -1)]))
35 AC_INIT([gnupg], my_version[]m4_if(my_issvn,[yes],[-svn[]svn_revision]),
36         [bug-gnupg@gnu.org])
37 # Set development_version to yes if the minor number is odd or you
38 # feel that the default check for a development version is not
39 # sufficient.
40 development_version=no
41
42 AC_CONFIG_AUX_DIR(scripts)
43 AC_CONFIG_SRCDIR(g10/gpg.c)
44 AC_CANONICAL_HOST
45 AM_INIT_AUTOMAKE([std-options])
46 AB_INIT
47 AM_CONFIG_HEADER(config.h)
48
49 AC_GNU_SOURCE
50
51 dnl
52 dnl  Check for random module options
53 dnl
54 AC_MSG_CHECKING([which random module to use])
55 AC_ARG_ENABLE(static-rnd,
56     [  --enable-static-rnd=[egd|unix|linux|auto]  ],
57 [use_static_rnd=$enableval], [use_static_rnd=default] )
58
59 if test "$use_static_rnd" = no; then
60     use_static_rnd=default
61 fi
62
63 case "$use_static_rnd" in
64     egd | linux | unix | default )
65       AC_MSG_RESULT($use_static_rnd)
66       ;;
67     auto )
68       AC_MSG_RESULT(automagically selected at runtime)
69       ;;
70     * )
71       AC_MSG_RESULT(invalid argument)
72       AC_MSG_ERROR(there is no random module rnd$use_static_rnd)
73       ;;
74 esac
75
76 AC_ARG_WITH(egd-socket,
77     [  --with-egd-socket=NAME  use NAME for the EGD socket],
78             egd_socket_name="$withval", egd_socket_name="" )
79 AC_DEFINE_UNQUOTED(EGD_SOCKET_NAME, "$egd_socket_name",
80                    [Define if you don't want the default EGD socket name.
81                     For details see cipher/rndegd.c])
82
83
84 dnl
85 dnl See whether the user wants to disable checking for /dev/random
86
87 AC_MSG_CHECKING([whether use of /dev/random is requested])
88 AC_ARG_ENABLE(dev-random,
89 [  --disable-dev-random    disable the use of dev random],
90     try_dev_random=$enableval, try_dev_random=yes)
91 AC_MSG_RESULT($try_dev_random)
92
93
94 dnl
95 dnl  Check other options
96 dnl
97
98 AC_MSG_CHECKING([whether assembler modules are requested])
99 AC_ARG_ENABLE(asm,
100 [  --disable-asm           do not use assembler modules],
101      try_asm_modules=$enableval, try_asm_modules=yes)
102 AC_MSG_RESULT($try_asm_modules)
103
104 dnl AC_MSG_CHECKING([whether memory guard is requested])
105 dnl AC_ARG_ENABLE(m-guard,
106 dnl     [  --enable-m-guard        enable memory guard facility],
107 dnl     use_m_guard=$enableval, use_m_guard=no)
108 dnl AC_MSG_RESULT($use_m_guard)
109 dnl if test "$use_m_guard" = yes ; then
110 dnl     AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
111 dnl fi
112
113 # SELinux support includes tracking of sensitive files to avoid
114 # leaking their contents through processing these files by gpg itself
115 AC_MSG_CHECKING([whether SELinux support is requested])
116 AC_ARG_ENABLE(selinux-support,
117               AC_HELP_STRING([--enable-selinux-support],
118                              [enable SELinux support]),
119               selinux_support=$enableval, selinux_support=no)
120 AC_MSG_RESULT($selinux_support)
121
122
123 AC_MSG_CHECKING([whether the new iconv based code is requested])
124 AC_ARG_ENABLE(gnupg-iconv,
125               AC_HELP_STRING([--disable-gnupg-iconv],
126                              [disable the new iconv code]),
127               gnupg_use_iconv=$enableval, gnupg_use_iconv=yes)
128 AC_MSG_RESULT($gnupg_use_iconv)
129
130 dnl See if we are disabling any algorithms or features for a smaller
131 dnl binary
132
133 try_extensions=no
134
135 try_gettext=yes
136 try_dns=yes
137 use_rsa=yes
138 use_idea=yes
139 use_cast5=yes
140 use_blowfish=yes
141 use_aes=yes
142 use_twofish=yes
143 use_sha256=yes
144 use_sha512=yes
145 use_bzip2=yes
146 use_exec=yes
147 card_support=yes
148 agent_support=yes
149 disable_keyserver_path=no
150
151 AC_ARG_ENABLE(minimal,
152    AC_HELP_STRING([--enable-minimal],[build the smallest gpg binary possible]),
153    try_gettext=no
154    try_dns=no
155    use_rsa=no
156    use_idea=no
157    use_cast5=no
158    use_blowfish=no
159    use_aes=no
160    use_twofish=no
161    use_sha256=no
162    use_sha512=no
163    use_bzip2=no
164    use_exec=no
165    card_support=no
166    agent_support=no)
167
168
169 AC_MSG_CHECKING([whether OpenPGP card support is requested])
170 AC_ARG_ENABLE(card-support,
171               AC_HELP_STRING([--disable-card-support],
172                              [disable OpenPGP card support]),
173               card_support=$enableval)
174 AC_MSG_RESULT($card_support)
175
176
177 # Note that we may later disable the agent support based on the platform.
178 AC_MSG_CHECKING([whether gpg-agent support is requested])
179 AC_ARG_ENABLE(agent-support,
180               AC_HELP_STRING([--disable-agent-support],
181                              [disable gpg-agent support]),
182               agent_support=$enableval)
183 AC_MSG_RESULT($agent_support)
184
185
186 AC_MSG_CHECKING([whether to enable the RSA public key algorithm])
187 AC_ARG_ENABLE(rsa,
188    AC_HELP_STRING([--disable-rsa],[disable the RSA public key algorithm]),
189    use_rsa=$enableval)
190 AC_MSG_RESULT($use_rsa)
191 if test x"$use_rsa" = xyes ; then
192    AC_DEFINE(USE_RSA,1,[Define to include the RSA public key algorithm])
193 fi
194
195 AC_MSG_CHECKING([whether to enable the IDEA cipher])
196 AC_ARG_ENABLE(idea,
197    AC_HELP_STRING([--disable-idea],[disable the IDEA cipher]),
198    use_idea=$enableval)
199 AC_MSG_RESULT($use_idea)
200 if test x"$use_idea" = xyes ; then
201    AC_DEFINE(USE_IDEA,1,[Define to include the IDEA cipher])
202
203 # We don't need idea but some people claim that they need it for
204 # research etc., so we allow to place an idea source code into the
205 # cipher directory and statically link it if available, otherwise we
206 # link to a stub.  We don't use AC_CHECK_FILE to avoid caching.
207
208    AC_MSG_CHECKING([for idea cipher module])
209    tmp=""
210    if test -f $srcdir/cipher/idea.c; then 
211       IDEA_O=idea.o
212       tmp=idea
213    else
214       IDEA_O=idea-stub.o
215       tmp=no
216       try_extensions=yes
217    fi
218    AC_SUBST(IDEA_O)
219    AC_MSG_RESULT($tmp)
220 fi
221
222 AC_MSG_CHECKING([whether to enable the CAST5 cipher])
223 AC_ARG_ENABLE(cast5,
224    AC_HELP_STRING([--disable-cast5],[disable the CAST5 cipher]),
225    use_cast5=$enableval)
226 AC_MSG_RESULT($use_cast5)
227 if test x"$use_cast5" = xyes ; then
228    AC_DEFINE(USE_CAST5,1,[Define to include the CAST5 cipher])
229 fi
230
231 AC_MSG_CHECKING([whether to enable the BLOWFISH cipher])
232 AC_ARG_ENABLE(blowfish,
233    AC_HELP_STRING([--disable-blowfish],[disable the BLOWFISH cipher]),
234    use_blowfish=$enableval)
235 AC_MSG_RESULT($use_blowfish)
236 if test x"$use_blowfish" = xyes ; then
237    AC_DEFINE(USE_BLOWFISH,1,[Define to include the BLOWFISH cipher])
238 fi
239
240 AC_MSG_CHECKING([whether to enable the AES ciphers])
241 AC_ARG_ENABLE(aes,
242    AC_HELP_STRING([--disable-aes],[disable the AES, AES192, and AES256 ciphers]),
243    use_aes=$enableval)
244 AC_MSG_RESULT($use_aes)
245 if test x"$use_aes" = xyes ; then
246    AC_DEFINE(USE_AES,1,[Define to include the AES, AES192, and AES256 ciphers])
247 fi
248
249 AC_MSG_CHECKING([whether to enable the TWOFISH cipher])
250 AC_ARG_ENABLE(twofish,
251    AC_HELP_STRING([--disable-twofish],[disable the TWOFISH cipher]),
252    use_twofish=$enableval)
253 AC_MSG_RESULT($use_twofish)
254 if test x"$use_twofish" = xyes ; then
255    AC_DEFINE(USE_TWOFISH,1,[Define to include the TWOFISH cipher])
256 fi
257
258 AC_MSG_CHECKING([whether to enable the SHA-256 digest])
259 AC_ARG_ENABLE(sha256,
260    AC_HELP_STRING([--disable-sha256],[disable the SHA-224 and SHA-256 digests]),
261    use_sha256=$enableval)
262 AC_MSG_RESULT($use_sha256)
263 if test x"$use_sha256" = xyes ; then
264    AC_DEFINE(USE_SHA256,1,[Define to include the SHA-224 and SHA-256 digests])
265 fi
266
267 dnl SHA512 is defined only after we confirm 64-bit support later
268 AC_MSG_CHECKING([whether to enable the SHA-384 and SHA-512 digests])
269 AC_ARG_ENABLE(sha512,
270    AC_HELP_STRING([--disable-sha512],[disable the SHA-384 and SHA-512 digests]),
271    use_sha512=$enableval)
272 AC_MSG_RESULT($use_sha512)
273
274 dnl BZLIB is defined only after we confirm the library is available later
275 AC_MSG_CHECKING([whether to enable the BZIP2 compression algorithm])
276 AC_ARG_ENABLE(bzip2,
277    AC_HELP_STRING([--disable-bzip2],[disable the BZIP2 compression algorithm]),
278    use_bzip2=$enableval)
279 AC_MSG_RESULT($use_bzip2)
280
281 AC_MSG_CHECKING([whether to enable external program execution])
282 AC_ARG_ENABLE(exec,
283     AC_HELP_STRING([--disable-exec],[disable all external program execution]),
284     use_exec=$enableval)
285 AC_MSG_RESULT($use_exec)
286 if test "$use_exec" = no ; then
287     AC_DEFINE(NO_EXEC,1,[Define to disable all external program execution])
288 fi
289
290 if test "$use_exec" = yes ; then
291   AC_MSG_CHECKING([whether to enable photo ID viewing])
292   AC_ARG_ENABLE(photo-viewers,
293       [  --disable-photo-viewers disable photo ID viewers],
294       [if test "$enableval" = no ; then
295          AC_DEFINE(DISABLE_PHOTO_VIEWER,1,[define to disable photo viewing])
296       fi],enableval=yes)
297   gnupg_cv_enable_photo_viewers=$enableval
298   AC_MSG_RESULT($enableval)
299
300   if test "$gnupg_cv_enable_photo_viewers" = yes ; then
301     AC_MSG_CHECKING([whether to use a fixed photo ID viewer])
302     AC_ARG_WITH(photo-viewer,
303         [  --with-photo-viewer=FIXED_VIEWER  set a fixed photo ID viewer],
304         [if test "$withval" = yes ; then
305            withval=no
306         elif test "$withval" != no ; then
307            AC_DEFINE_UNQUOTED(FIXED_PHOTO_VIEWER,"$withval",
308                             [if set, restrict photo-viewer to this])
309         fi],withval=no)
310     AC_MSG_RESULT($withval)
311   fi
312
313   AC_MSG_CHECKING([whether to enable external keyserver helpers])
314   AC_ARG_ENABLE(keyserver-helpers,
315       [  --disable-keyserver-helpers  disable all external keyserver support],
316       [if test "$enableval" = no ; then
317          AC_DEFINE(DISABLE_KEYSERVER_HELPERS,1,
318                   [define to disable keyserver helpers])
319       fi],enableval=yes)
320   gnupg_cv_enable_keyserver_helpers=$enableval
321   AC_MSG_RESULT($enableval)
322
323   if test "$gnupg_cv_enable_keyserver_helpers" = yes ; then
324 dnl LDAP is defined only after we confirm the library is available later
325     AC_MSG_CHECKING([whether LDAP keyserver support is requested])
326     AC_ARG_ENABLE(ldap,
327       AC_HELP_STRING([--disable-ldap],[disable LDAP keyserver interface only]),
328       try_ldap=$enableval, try_ldap=yes)
329     AC_MSG_RESULT($try_ldap)
330
331     AC_MSG_CHECKING([whether HKP keyserver support is requested])
332     AC_ARG_ENABLE(hkp,
333       AC_HELP_STRING([--disable-hkp],[disable HKP keyserver interface only]),
334       try_hkp=$enableval, try_hkp=yes)
335     AC_MSG_RESULT($try_hkp)
336
337     AC_MSG_CHECKING([whether finger key fetching support is requested])
338     AC_ARG_ENABLE(finger,
339       AC_HELP_STRING([--disable-finger],
340         [disable finger key fetching interface only]),
341       try_finger=$enableval, try_finger=yes)
342     AC_MSG_RESULT($try_finger)
343
344     AC_MSG_CHECKING([whether generic object key fetching support is requested])
345     AC_ARG_ENABLE(generic,
346       AC_HELP_STRING([--disable-generic],
347         [disable generic object key fetching interface only]),
348       try_generic=$enableval, try_generic=yes)
349     AC_MSG_RESULT($try_generic)
350
351     AC_MSG_CHECKING([whether email keyserver support is requested])
352     AC_ARG_ENABLE(mailto,
353       AC_HELP_STRING([--enable-mailto],
354         [enable email keyserver interface only]),
355       try_mailto=$enableval, try_mailto=no)
356     AC_MSG_RESULT($try_mailto)
357   fi
358
359   AC_MSG_CHECKING([whether keyserver exec-path is enabled])
360   AC_ARG_ENABLE(keyserver-path,
361     AC_HELP_STRING([--disable-keyserver-path],
362       [disable the exec-path option for keyserver helpers]),
363     [if test "$enableval" = no ; then
364        disable_keyserver_path=yes
365     fi],enableval=yes)
366   AC_MSG_RESULT($enableval)
367 fi
368
369 AC_MSG_CHECKING([whether the included zlib is requested])
370 AC_ARG_WITH(included-zlib,
371     [  --with-included-zlib    use the zlib code included here],
372 [g10_force_zlib="$withval"], [g10_force_zlib=no] )
373 AC_MSG_RESULT($g10_force_zlib)
374
375 dnl
376 dnl Check for the key/uid cache size.  This can't be zero, but can be
377 dnl pretty small on embedded systems.
378 dnl
379 AC_MSG_CHECKING([for the size of the key and uid cache])
380 AC_ARG_ENABLE(key-cache,
381         AC_HELP_STRING([--enable-key-cache=SIZE],[Set key cache to SIZE (default 4096)]),,enableval=4096)
382
383 if test "$enableval" = "no"; then
384    enableval=5
385 elif test "$enableval" = "yes" || test "$enableval" = ""; then
386    enableval=4096
387 fi
388
389 changequote(,)dnl
390 key_cache_size=`echo "$enableval" | sed 's/[A-Za-z]//g'`
391 changequote([,])dnl
392
393 if test "$enableval" != "$key_cache_size" || test "$key_cache_size" -lt 5; then
394    AC_MSG_ERROR([invalid key-cache size])
395 fi
396
397 AC_MSG_RESULT($key_cache_size)
398 AC_DEFINE_UNQUOTED(PK_UID_CACHE_SIZE,$key_cache_size,[Size of the key and UID caches])
399
400 dnl
401 dnl Check whether we want to use Linux capabilities
402 dnl
403 AC_MSG_CHECKING([whether use of capabilities is requested])
404 AC_ARG_WITH(capabilities,
405     [  --with-capabilities     use linux capabilities [default=no]],
406 [use_capabilities="$withval"],[use_capabilities=no])
407 AC_MSG_RESULT($use_capabilities)
408
409 # To avoid double inclusion of config.h which might happen at some
410 # places, we add the usual double inclusion protection.
411 AH_TOP([
412 #ifndef GNUPG_CONFIG_H_INCLUDED
413 #define GNUPG_CONFIG_H_INCLUDED
414 ])
415
416 AH_BOTTOM([
417 /* We didn't define endianness above, so get it from OS macros.  This
418 is intended for making fat binary builds on OS X. */
419 #if !defined(BIG_ENDIAN_HOST) && !defined(LITTLE_ENDIAN_HOST)
420 # if defined(__BIG_ENDIAN__)
421 #  define BIG_ENDIAN_HOST 1
422 # elif defined(__LITTLE_ENDIAN__)
423 #  define LITTLE_ENDIAN_HOST 1
424 # else
425 #  error "No endianness found"
426 # endif
427 #endif
428
429 #if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
430 # define EXEC_TEMPFILE_ONLY
431 #endif
432
433 /* 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,,
664                  AC_SEARCH_LIBS(__res_query,resolv bind,,have_resolver=no))
665   AC_SEARCH_LIBS(dn_expand,resolv bind,,
666                  AC_SEARCH_LIBS(__dn_expand,resolv bind,,have_resolver=no))
667   AC_SEARCH_LIBS(dn_skipname,resolv bind,,
668                  AC_SEARCH_LIBS(__dn_skipname,resolv bind,,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)
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 dnl
1055 dnl check whether we have a random device
1056 dnl
1057 if test "$try_dev_random" = yes ; then
1058     AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
1059     [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
1060       ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
1061     if test "$ac_cv_have_dev_random" = yes; then
1062         AC_DEFINE(HAVE_DEV_RANDOM,1,
1063                  [defined if the system supports a random device] )
1064     fi
1065 else
1066     AC_MSG_CHECKING(for random device)
1067     ac_cv_have_dev_random=no
1068     AC_MSG_RESULT(has been disabled)
1069 fi
1070
1071
1072 dnl
1073 dnl Figure out the default random module.
1074 dnl
1075 random_modules=""
1076 if test "$use_static_rnd" = default; then
1077      if test "$ac_cv_have_dev_random" = yes; then
1078         random_modules="rndlinux"
1079      else
1080          case "${host}" in
1081             *-mingw32*|*-*-cygwin*)
1082                 random_modules="rndw32"
1083                 ;;
1084             i?86-emx-os2|i?86-*-os2*emx)
1085                 random_modules="rndos2"
1086                 ;;
1087             m68k-atari-mint)
1088                 random_modules="rndatari"
1089                 ;;
1090             i?86-*-msdosdjgpp*)
1091                 :
1092                 ;;
1093             *)
1094                 random_modules="rndlinux rndegd rndunix"
1095                 AC_DEFINE(USE_ALL_RANDOM_MODULES, 1, 
1096                           [Allow to select random modules at runtime.])
1097                 ;;
1098          esac
1099      fi
1100 else
1101   if test "$use_static_rnd" = auto; then
1102      random_modules="rndlinux rndegd rndunix"
1103      AC_DEFINE(USE_ALL_RANDOM_MODULES, 1)
1104   else
1105      random_modules="rnd$use_static_rnd";
1106   fi
1107 fi
1108
1109 if test -z "$random_modules"; then
1110    AC_MSG_ERROR(no random module available)
1111 fi
1112 print_egd_warning=no
1113 for rndmod in $random_modules "" ; do
1114   case "$rndmod" in
1115     rndlinux)
1116          AC_DEFINE(USE_RNDLINUX,1, 
1117                   [Defined if the /dev/random based RNG should be used.])
1118          use_rndlinux=yes
1119          ;;
1120     rndunix)
1121          AC_DEFINE(USE_RNDUNIX,1, 
1122                   [Defined if the default Unix RNG should be used.])
1123          print_egd_warning=yes
1124          use_rndunix=yes
1125           ;;
1126     rndegd)
1127          AC_DEFINE(USE_RNDEGD,1, 
1128                   [Defined if the EGD based RNG should be used.])
1129          use_rndegd=yes
1130          ;;
1131     rndw32)
1132          AC_DEFINE(USE_RNDW32,1, 
1133                   [Defined if the Windows specific RNG should be used.])
1134          use_rndw32=yes
1135         ;;
1136    esac
1137 done
1138
1139 AM_CONDITIONAL(USE_RNDLINUX, test "$use_rndlinux" = yes)
1140 AM_CONDITIONAL(USE_RNDUNIX,  test "$use_rndunix" = yes)
1141 AM_CONDITIONAL(USE_RNDEGD,   test "$use_rndegd" = yes)
1142 AM_CONDITIONAL(USE_RNDW32,   test "$use_rndw32" = yes)
1143
1144 dnl setup assembler stuff
1145 AC_MSG_CHECKING(for mpi assembler functions)
1146 if test -f $srcdir/mpi/config.links ; then
1147     . $srcdir/mpi/config.links
1148     AC_CONFIG_LINKS("$mpi_ln_list")
1149     ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
1150     ac_cv_mpi_sflags="$mpi_sflags"
1151     ac_cv_mpi_config_done="yes"
1152     AC_MSG_RESULT(done)
1153 else
1154     AC_MSG_RESULT(failed)
1155     AC_MSG_ERROR([mpi/config.links missing!])
1156 fi
1157 MPI_EXTRA_ASM_OBJS=""
1158 show_extraasm=""
1159 if test "$ac_cv_mpi_extra_asm_modules" != ""; then
1160 for i in $ac_cv_mpi_extra_asm_modules; do
1161     show_extraasm="$show_extraasm $i"
1162     MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
1163 done
1164 fi
1165 AC_SUBST(MPI_EXTRA_ASM_OBJS)
1166 MPI_SFLAGS="$ac_cv_mpi_sflags"
1167 AC_SUBST(MPI_SFLAGS)
1168
1169 # Sanity check regex.  Tests adapted from mutt.
1170
1171 AC_MSG_CHECKING([whether regular expression support is requested])
1172 AC_ARG_ENABLE(regex,
1173   AC_HELP_STRING([--disable-regex],
1174     [do not handle regular expressions in trust signatures]),
1175   use_regex=$enableval, use_regex=yes)
1176 AC_MSG_RESULT($use_regex)
1177
1178 if test "$use_regex" = yes ; then
1179   AC_MSG_CHECKING([whether the included regex lib is requested])
1180   AC_ARG_WITH(included-regex,
1181       [  --with-included-regex   use the included GNU regex library],
1182       [gnupg_cv_included_regex="$withval"],[gnupg_cv_included_regex=no])
1183   AC_MSG_RESULT($gnupg_cv_included_regex)
1184
1185   if test $gnupg_cv_included_regex = no ; then
1186      # Does the system have regex functions at all?
1187      AC_CHECK_FUNC(regcomp,gnupg_cv_included_regex=no,
1188                            gnupg_cv_included_regex=yes)
1189   fi
1190
1191   if test $gnupg_cv_included_regex = no ; then
1192      AC_CACHE_CHECK([whether your system's regexp library is broken],
1193        [gnupg_cv_regex_broken],
1194        AC_TRY_RUN([
1195 #include <unistd.h>
1196 #include <regex.h>
1197 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); }],
1198        gnupg_cv_regex_broken=no, gnupg_cv_regex_broken=yes, gnupg_cv_regex_broken=yes))
1199
1200      if test $gnupg_cv_regex_broken = yes ; then
1201       AC_MSG_WARN(your regex is broken - using the included GNU regex instead.)
1202       gnupg_cv_included_regex=yes
1203      fi
1204   fi
1205
1206   if test $gnupg_cv_included_regex = yes; then
1207      AC_DEFINE(USE_INTERNAL_REGEX,1,[ Define if you want to use the included regex lib ])
1208   fi
1209 else
1210   AC_DEFINE(DISABLE_REGEX,1,[ Define to disable regular expression support ])
1211 fi
1212
1213 AM_CONDITIONAL(USE_INTERNAL_REGEX, test x"$gnupg_cv_included_regex" = xyes)
1214
1215 dnl Do we have zlib? Must do it here because Solaris failed
1216 dnl when compiling a conftest (due to the "-lz" from LIBS).
1217 use_local_zlib=yes
1218 if test "$g10_force_zlib" = "yes"; then
1219   :
1220 else
1221   _cppflags="${CPPFLAGS}"
1222   _ldflags="${LDFLAGS}"
1223
1224   AC_ARG_WITH(zlib,
1225   [  --with-zlib=DIR         use libz in DIR],[
1226     if test -d "$withval"; then
1227       CPPFLAGS="${CPPFLAGS} -I$withval/include"
1228       LDFLAGS="${LDFLAGS} -L$withval/lib"
1229     fi
1230   ])
1231
1232   AC_CHECK_HEADER(zlib.h,
1233       AC_CHECK_LIB(z, deflateInit2_,
1234        use_local_zlib=no
1235        ZLIBS="-lz",
1236        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1237        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
1238 fi
1239
1240 if test "$use_local_zlib" = yes ; then
1241     AC_CONFIG_LINKS(zlib.h:zlib/zlib.h zconf.h:zlib/zconf.h )
1242     ZLIBS="../zlib/libzlib.a"
1243 fi
1244
1245 AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, test "$use_local_zlib" = yes)
1246
1247 if test "$use_bzip2" = yes ; then
1248   _cppflags="${CPPFLAGS}"
1249   _ldflags="${LDFLAGS}"
1250   AC_ARG_WITH(bzip2,
1251      AC_HELP_STRING([--with-bzip2=DIR],[look for bzip2 in DIR]),
1252       [
1253       if test -d "$withval" ; then
1254         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1255         LDFLAGS="${LDFLAGS} -L$withval/lib"
1256       fi
1257       ],withval="")
1258
1259 # Checking alongside stdio.h as an early version of bzip2 (1.0)
1260 # required stdio.h to be included before bzlib.h, and Solaris 9 is
1261 # woefully out of date.
1262
1263   if test "$withval" != no ; then
1264      AC_CHECK_HEADER(bzlib.h,
1265         AC_CHECK_LIB(bz2,BZ2_bzCompressInit,
1266           [
1267           have_bz2=yes
1268           ZLIBS="$ZLIBS -lbz2"
1269           AC_DEFINE(HAVE_BZIP2,1,
1270                   [Defined if the bz2 compression library is available])
1271           ],
1272           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1273           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags},[#include <stdio.h>])
1274   fi
1275 fi
1276
1277 AM_CONDITIONAL(ENABLE_BZIP2_SUPPORT,test x"$have_bz2" = "xyes")
1278 AC_SUBST(ZLIBS)
1279
1280 # libusb allows us to use the integrated CCID smartcard reader driver.
1281 # We don't need it if we don't have card support though.
1282 if test "$card_support" = yes ; then
1283    GNUPG_CHECK_LIBUSB
1284 fi
1285
1286 # Check for readline support
1287 GNUPG_CHECK_READLINE
1288
1289 # Allow users to append something to the version string without
1290 # flagging it as development version.  The user version parts is
1291 # considered everything after a dash. 
1292 if test "$development_version" != yes; then
1293   changequote(,)dnl
1294   tmp_pat='[a-zA-Z]'
1295   changequote([,])dnl
1296   if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
1297     development_version=yes
1298   fi
1299 fi
1300 if test "$development_version" = yes; then
1301     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
1302             [Defined if this is not a regular release])
1303 fi
1304
1305 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
1306
1307
1308 # add some extra libs here so that previous tests don't fail for
1309 # mysterious reasons - the final link step should bail out. 
1310 case "${host}" in
1311     *-mingw32*)
1312 dnl      NETLIBS="$NETLIBS -lwsock32"
1313         W32LIBS="-lwsock32"
1314         ;;
1315     *)
1316        ;;
1317 esac
1318
1319 AC_SUBST(NETLIBS)
1320 AC_SUBST(W32LIBS)
1321
1322 # Special options used with gcc.
1323 if test "$GCC" = yes; then
1324     # Note that it is okay to use CFLAGS here because this are just
1325     # warning options and the user should have a chance of overriding
1326     #them.
1327     if test "$USE_MAINTAINER_MODE" = "yes"; then
1328         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
1329         CFLAGS="$CFLAGS -Wformat-nonliteral"
1330     else
1331         CFLAGS="$CFLAGS -Wall"
1332     fi
1333
1334     # This is handy for debugging so the compiler doesn't rearrange
1335     # things and eliminate variables.
1336     AC_ARG_ENABLE(optimization,
1337        AC_HELP_STRING([--disable-optimization],
1338                       [disable compiler optimization]),
1339                       [if test $enableval = no ; then
1340                          CFLAGS=`echo $CFLAGS | sed 's/-O[[0-9]]//'`
1341                        fi])
1342
1343     AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign])
1344
1345     _gcc_cflags_save=$CFLAGS
1346     CFLAGS="-Wno-pointer-sign"
1347
1348     AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_psign=yes,_gcc_psign=no)
1349     AC_MSG_RESULT($_gcc_psign)
1350
1351     CFLAGS=$_gcc_cflags_save;
1352
1353     if test x"$_gcc_psign" = xyes ; then
1354        CFLAGS="$CFLAGS -Wno-pointer-sign"
1355     fi
1356 fi
1357
1358 CL_AS_NOEXECSTACK
1359
1360 if test "$print_egd_warning" = yes; then
1361   AC_MSG_WARN([[
1362 ***
1363 *** The performance of the UNIX random gatherer module is not very good
1364 *** and it does not keep the entropy pool over multiple invocations of
1365 *** GnuPG.  The suggested way to overcome this problem is to use the
1366 ***
1367 ***               Entropy Gathering Daemon (EGD)
1368 ***
1369 *** which provides a entropy source for the whole system.  It is written
1370 *** in Perl and available at the GnuPG FTP servers.  For more information
1371 *** consult the GnuPG webpages:
1372 ***
1373 ***           http://www.gnupg.org/download/#EGD
1374 ***
1375 *** You may want to run ./configure with --enable-static-rnd=egd or
1376 *** --enable-static-rnd=auto to use it.
1377 ***]])
1378 fi
1379
1380 AC_CONFIG_FILES([
1381 Makefile
1382 m4/Makefile
1383 intl/Makefile
1384 po/Makefile.in
1385 util/Makefile
1386 mpi/Makefile
1387 cipher/Makefile
1388 g10/Makefile
1389 keyserver/Makefile
1390 keyserver/gpgkeys_mailto
1391 keyserver/gpgkeys_test
1392 doc/Makefile
1393 tools/Makefile
1394 tools/gpg-zip
1395 zlib/Makefile
1396 checks/Makefile
1397 ])
1398 AC_OUTPUT
1399
1400 # Give some feedback
1401 echo
1402 echo   "                Version info:   $PACKAGE_STRING"             
1403 echo   "                Configured for: $PRINTABLE_OS_NAME ($host)"
1404 if test -n "$show_extraasm"; then
1405   echo "  Extra cpu specific functions:$show_extraasm"
1406 fi
1407 echo