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