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