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