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