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