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