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