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