tests: Disable the migrations tests
[gnupg.git] / configure.ac
1 # configure.ac - for GnuPG 2.1
2 # Copyright (C) 1998-2012 Free Software Foundation, Inc.
3 # Copyright (C) 1998-2015 Werner Koch
4 #
5 # This file is part of GnuPG.
6 #
7 # GnuPG is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # GnuPG is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, see <http://www.gnu.org/licenses/>.
19
20 # Process this file with autoconf to produce a configure script.
21 AC_PREREQ(2.61)
22 min_automake_version="1.14"
23
24 # To build a release you need to create a tag with the version number
25 # (git tag -s gnupg-2.n.m) and run "./autogen.sh --force".  Please
26 # bump the version number immediately *after* the release and do
27 # another commit and push so that the git magic is able to work.
28 m4_define([mym4_package],[gnupg])
29 m4_define([mym4_major], [2])
30 m4_define([mym4_minor], [1])
31 m4_define([mym4_micro], [12])
32
33 # To start a new development series, i.e a new major or minor number
34 # you need to mark an arbitrary commit before the first beta release
35 # with an annotated tag.  For example the 2.1 branch starts off with
36 # the tag "gnupg-2.1-base".  This is used as the base for counting
37 # beta numbers before the first release of a series.
38
39 # Below is m4 magic to extract and compute the git revision number,
40 # the decimalized short revision number, a beta version string and a
41 # flag indicating a development version (mym4_isbeta).  Note that the
42 # m4 processing is done by autoconf and not during the configure run.
43 m4_define([mym4_verslist], m4_split(m4_esyscmd([./autogen.sh --find-version] \
44                            mym4_package mym4_major mym4_minor mym4_micro),[:]))
45 m4_define([mym4_isbeta],       m4_argn(2, mym4_verslist))
46 m4_define([mym4_version],      m4_argn(4, mym4_verslist))
47 m4_define([mym4_revision],     m4_argn(7, mym4_verslist))
48 m4_define([mym4_revision_dec], m4_argn(8, mym4_verslist))
49 m4_esyscmd([echo ]mym4_version[>VERSION])
50 AC_INIT([mym4_package],[mym4_version], [https://bugs.gnupg.org])
51
52 # Note that for Windows we require version 1.22
53 NEED_GPG_ERROR_VERSION=1.21
54
55 NEED_LIBGCRYPT_API=1
56 NEED_LIBGCRYPT_VERSION=1.6.0
57
58 NEED_LIBASSUAN_API=2
59 NEED_LIBASSUAN_VERSION=2.4.1
60
61 NEED_KSBA_API=1
62 NEED_KSBA_VERSION=1.2.0
63
64 NEED_NTBTLS_API=1
65 NEED_NTBTLS_VERSION=0.1.0
66
67 NEED_NPTH_API=1
68 NEED_NPTH_VERSION=0.91
69
70
71 NEED_GNUTLS_VERSION=3.0
72
73 NEED_SQLITE_VERSION=3.7
74
75 development_version=mym4_isbeta
76 PACKAGE=$PACKAGE_NAME
77 PACKAGE_GT=${PACKAGE_NAME}2
78 VERSION=$PACKAGE_VERSION
79
80 AC_CONFIG_AUX_DIR([build-aux])
81 AC_CONFIG_SRCDIR([sm/gpgsm.c])
82 AC_CONFIG_HEADER([config.h])
83 AM_INIT_AUTOMAKE([serial-tests dist-bzip2 no-dist-gzip])
84 AC_CANONICAL_HOST
85 AB_INIT
86
87 AC_GNU_SOURCE
88
89 # Before we do anything with the C compiler, we first save the user's
90 # CFLAGS (they are restored at the end of the configure script).  This
91 # is because some configure checks don't work with -Werror, but we'd
92 # like to use -Werror with our build.
93 CFLAGS_orig=$CFLAGS
94 CFLAGS=
95
96 # Some status variables.
97 have_gpg_error=no
98 have_libgcrypt=no
99 have_libassuan=no
100 have_ksba=no
101 have_ntbtls=no
102 have_gnutls=no
103 have_sqlite=no
104 have_npth=no
105 have_libusb=no
106 have_adns=no
107 gnupg_have_ldap="n/a"
108
109 use_zip=yes
110 use_bzip2=yes
111 use_exec=yes
112 use_trust_models=yes
113 use_tofu=yes
114 card_support=yes
115 use_ccid_driver=auto
116 dirmngr_auto_start=yes
117 use_tls_library=no
118 large_secmem=no
119 show_tor_support=no
120
121
122 GNUPG_BUILD_PROGRAM(gpg, yes)
123 GNUPG_BUILD_PROGRAM(gpgsm, yes)
124 # The agent is a required part and can't be disabled anymore.
125 build_agent=yes
126 GNUPG_BUILD_PROGRAM(scdaemon, yes)
127 GNUPG_BUILD_PROGRAM(g13, no)
128 GNUPG_BUILD_PROGRAM(dirmngr, yes)
129 GNUPG_BUILD_PROGRAM(tools, yes)
130 GNUPG_BUILD_PROGRAM(doc, yes)
131 GNUPG_BUILD_PROGRAM(symcryptrun, no)
132 GNUPG_BUILD_PROGRAM(gpgtar, yes)
133
134 AC_SUBST(PACKAGE)
135 AC_SUBST(PACKAGE_GT)
136 AC_SUBST(VERSION)
137 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
138 AC_DEFINE_UNQUOTED(PACKAGE_GT, "$PACKAGE_GT",
139                                 [Name of this package for gettext])
140 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
141 AC_DEFINE_UNQUOTED(PACKAGE_BUGREPORT, "$PACKAGE_BUGREPORT",
142                                         [Bug report address])
143 AC_DEFINE_UNQUOTED(NEED_LIBGCRYPT_VERSION, "$NEED_LIBGCRYPT_VERSION",
144                                        [Required version of Libgcrypt])
145 AC_DEFINE_UNQUOTED(NEED_KSBA_VERSION, "$NEED_KSBA_VERSION",
146                                        [Required version of Libksba])
147 AC_DEFINE_UNQUOTED(NEED_NTBTLS_VERSION, "$NEED_NTBTLS_VERSION",
148                                        [Required version of NTBTLS])
149
150
151
152 # The default is to use the modules from this package and the few
153 # other packages in a standard place; i.e where this package gets
154 # installed.  With these options it is possible to override these
155 # ${prefix} depended values with fixed paths, which can't be replaced
156 # at make time.  See also am/cmacros.am and the defaults in AH_BOTTOM.
157 AC_ARG_WITH(agent-pgm,
158     [  --with-agent-pgm=PATH  Use PATH as the default for the agent)],
159           GNUPG_AGENT_PGM="$withval", GNUPG_AGENT_PGM="" )
160 AC_SUBST(GNUPG_AGENT_PGM)
161 AM_CONDITIONAL(GNUPG_AGENT_PGM, test -n "$GNUPG_AGENT_PGM")
162 show_gnupg_agent_pgm="(default)"
163 test -n "$GNUPG_AGENT_PGM" && show_gnupg_agent_pgm="$GNUPG_AGENT_PGM"
164
165 AC_ARG_WITH(pinentry-pgm,
166     [  --with-pinentry-pgm=PATH  Use PATH as the default for the pinentry)],
167           GNUPG_PINENTRY_PGM="$withval", GNUPG_PINENTRY_PGM="" )
168 AC_SUBST(GNUPG_PINENTRY_PGM)
169 AM_CONDITIONAL(GNUPG_PINENTRY_PGM, test -n "$GNUPG_PINENTRY_PGM")
170 show_gnupg_pinentry_pgm="(default)"
171 test -n "$GNUPG_PINENTRY_PGM" && show_gnupg_pinentry_pgm="$GNUPG_PINENTRY_PGM"
172
173
174 AC_ARG_WITH(scdaemon-pgm,
175     [  --with-scdaemon-pgm=PATH  Use PATH as the default for the scdaemon)],
176           GNUPG_SCDAEMON_PGM="$withval", GNUPG_SCDAEMON_PGM="" )
177 AC_SUBST(GNUPG_SCDAEMON_PGM)
178 AM_CONDITIONAL(GNUPG_SCDAEMON_PGM, test -n "$GNUPG_SCDAEMON_PGM")
179 show_gnupg_scdaemon_pgm="(default)"
180 test -n "$GNUPG_SCDAEMON_PGM" && show_gnupg_scdaemon_pgm="$GNUPG_SCDAEMON_PGM"
181
182
183 AC_ARG_WITH(dirmngr-pgm,
184     [  --with-dirmngr-pgm=PATH  Use PATH as the default for the dirmngr)],
185           GNUPG_DIRMNGR_PGM="$withval", GNUPG_DIRMNGR_PGM="" )
186 AC_SUBST(GNUPG_DIRMNGR_PGM)
187 AM_CONDITIONAL(GNUPG_DIRMNGR_PGM, test -n "$GNUPG_DIRMNGR_PGM")
188 show_gnupg_dirmngr_pgm="(default)"
189 test -n "$GNUPG_DIRMNGR_PGM" && show_gnupg_dirmngr_pgm="$GNUPG_DIRMNGR_PGM"
190
191 AC_ARG_WITH(protect-tool-pgm,
192     [  --with-protect-tool-pgm=PATH  Use PATH as the default for the protect-tool)],
193           GNUPG_PROTECT_TOOL_PGM="$withval", GNUPG_PROTECT_TOOL_PGM="" )
194 AC_SUBST(GNUPG_PROTECT_TOOL_PGM)
195 AM_CONDITIONAL(GNUPG_PROTECT_TOOL_PGM, test -n "$GNUPG_PROTECT_TOOL_PGM")
196 show_gnupg_protect_tool_pgm="(default)"
197 test -n "$GNUPG_PROTECT_TOOL_PGM" \
198       && show_gnupg_protect_tool_pgm="$GNUPG_PROTECT_TOOL_PGM"
199
200 AC_ARG_WITH(dirmngr-ldap-pgm,
201     [  --with-dirmngr-ldap-pgm=PATH  Use PATH as the default for the dirmnge ldap wrapper)],
202           GNUPG_DIRMNGR_LDAP_PGM="$withval", GNUPG_DIRMNGR_LDAP_PGM="" )
203 AC_SUBST(GNUPG_DIRMNGR_LDAP_PGM)
204 AM_CONDITIONAL(GNUPG_DIRMNGR_LDAP_PGM, test -n "$GNUPG_DIRMNGR_LDAP_PGM")
205 show_gnupg_dirmngr_ldap_pgm="(default)"
206 test -n "$GNUPG_DIRMNGR_LDAP_PGM" \
207       && show_gnupg_dirmngr_ldap_pgm="$GNUPG_DIRMNGR_LDAP_PGM"
208
209 #
210 # On some platforms gpg2 is usually installed as gpg without using a
211 # symlink.  For correct operation of gpgconf it needs to know the
212 # installed name of gpg.  This option sets "gpg2"'s installed name to
213 # just "gpg".  Note that it might be required to rename gpg2 to gpg
214 # manually after the build process.
215 #
216 AC_ARG_ENABLE(gpg2-is-gpg,
217     AC_HELP_STRING([--enable-gpg2-is-gpg],[Set installed name of gpg2 to gpg]),
218     gpg2_is_gpg=$enableval)
219 if test "$gpg2_is_gpg" != "yes"; then
220    AC_DEFINE(USE_GPG2_HACK, 1, [Define to install gpg as gpg2])
221 fi
222 AM_CONDITIONAL(USE_GPG2_HACK, test "$gpg2_is_gpg" != "yes")
223
224
225 # SELinux support includes tracking of sensitive files to avoid
226 # leaking their contents through processing these files by gpg itself
227 AC_MSG_CHECKING([whether SELinux support is requested])
228 AC_ARG_ENABLE(selinux-support,
229               AC_HELP_STRING([--enable-selinux-support],
230                              [enable SELinux support]),
231               selinux_support=$enableval, selinux_support=no)
232 AC_MSG_RESULT($selinux_support)
233
234
235 AC_MSG_CHECKING([whether to allocate extra secure memory])
236 AC_ARG_ENABLE(large-secmem,
237               AC_HELP_STRING([--enable-large-secmem],
238                              [allocate extra secure memory]),
239               large_secmem=$enableval, large_secmem=no)
240 AC_MSG_RESULT($large_secmem)
241 if test "$large_secmem" = yes ; then
242    SECMEM_BUFFER_SIZE=65536
243 else
244    SECMEM_BUFFER_SIZE=32768
245 fi
246 AC_DEFINE_UNQUOTED(SECMEM_BUFFER_SIZE,$SECMEM_BUFFER_SIZE,
247                    [Size of secure memory buffer])
248
249 AC_MSG_CHECKING([whether to enable trust models])
250 AC_ARG_ENABLE(trust-models,
251               AC_HELP_STRING([--disable-trust-models],
252                              [disable all trust models except "always"]),
253               use_trust_models=$enableval)
254 AC_MSG_RESULT($use_trust_models)
255 if test "$use_trust_models" = no ; then
256     AC_DEFINE(NO_TRUST_MODELS, 1,
257              [Define to include only trust-model always])
258 fi
259
260 AC_MSG_CHECKING([whether to enable TOFU])
261 AC_ARG_ENABLE(tofu,
262                 AC_HELP_STRING([--disable-tofu],
263                                [disable the TOFU trust model]),
264               use_tofu=$enableval, use_tofu=$use_trust_models)
265 AC_MSG_RESULT($use_tofu)
266 if test "$use_trust_models" = no && test "$use_tofu" = yes; then
267     AC_MSG_ERROR([both --disable-trust-models and --enable-tofu given])
268 fi
269
270
271
272 #
273 # Options to disable algorithm
274 #
275
276 GNUPG_GPG_DISABLE_ALGO([rsa],[RSA public key])
277 # Elgamal is a MUST algorithm
278 # DSA is a MUST algorithm
279 GNUPG_GPG_DISABLE_ALGO([ecdh],[ECDH public key])
280 GNUPG_GPG_DISABLE_ALGO([ecdsa],[ECDSA public key])
281 GNUPG_GPG_DISABLE_ALGO([eddsa],[EdDSA public key])
282
283 GNUPG_GPG_DISABLE_ALGO([idea],[IDEA cipher])
284 # 3DES is a MUST algorithm
285 GNUPG_GPG_DISABLE_ALGO([cast5],[CAST5 cipher])
286 GNUPG_GPG_DISABLE_ALGO([blowfish],[BLOWFISH cipher])
287 GNUPG_GPG_DISABLE_ALGO([aes128],[AES128 cipher])
288 GNUPG_GPG_DISABLE_ALGO([aes192],[AES192 cipher])
289 GNUPG_GPG_DISABLE_ALGO([aes256],[AES256 cipher])
290 GNUPG_GPG_DISABLE_ALGO([twofish],[TWOFISH cipher])
291 GNUPG_GPG_DISABLE_ALGO([camellia128],[CAMELLIA128 cipher])
292 GNUPG_GPG_DISABLE_ALGO([camellia192],[CAMELLIA192 cipher])
293 GNUPG_GPG_DISABLE_ALGO([camellia256],[CAMELLIA256 cipher])
294
295 GNUPG_GPG_DISABLE_ALGO([md5],[MD5 hash])
296 # SHA1 is a MUST algorithm
297 GNUPG_GPG_DISABLE_ALGO([rmd160],[RIPE-MD160 hash])
298 GNUPG_GPG_DISABLE_ALGO([sha224],[SHA-224 hash])
299 # SHA256 is a MUST algorithm for GnuPG.
300 GNUPG_GPG_DISABLE_ALGO([sha384],[SHA-384 hash])
301 GNUPG_GPG_DISABLE_ALGO([sha512],[SHA-512 hash])
302
303
304 # Allow disabling of zip support.
305 # This is in general not a good idea because according to rfc4880 OpenPGP
306 # implementations SHOULD support ZLIB.
307 AC_MSG_CHECKING([whether to enable the ZIP and ZLIB compression algorithm])
308 AC_ARG_ENABLE(zip,
309    AC_HELP_STRING([--disable-zip],
310                   [disable the ZIP and ZLIB compression algorithm]),
311    use_zip=$enableval)
312 AC_MSG_RESULT($use_zip)
313
314 # Allow disabling of bzib2 support.
315 # It is defined only after we confirm the library is available later
316 AC_MSG_CHECKING([whether to enable the BZIP2 compression algorithm])
317 AC_ARG_ENABLE(bzip2,
318    AC_HELP_STRING([--disable-bzip2],[disable the BZIP2 compression algorithm]),
319    use_bzip2=$enableval)
320 AC_MSG_RESULT($use_bzip2)
321
322 # Configure option to allow or disallow execution of external
323 # programs, like a photo viewer.
324 AC_MSG_CHECKING([whether to enable external program execution])
325 AC_ARG_ENABLE(exec,
326     AC_HELP_STRING([--disable-exec],[disable all external program execution]),
327     use_exec=$enableval)
328 AC_MSG_RESULT($use_exec)
329 if test "$use_exec" = no ; then
330     AC_DEFINE(NO_EXEC,1,[Define to disable all external program execution])
331 fi
332
333 if test "$use_exec" = yes ; then
334   AC_MSG_CHECKING([whether to enable photo ID viewing])
335   AC_ARG_ENABLE(photo-viewers,
336       [  --disable-photo-viewers disable photo ID viewers],
337       [if test "$enableval" = no ; then
338          AC_DEFINE(DISABLE_PHOTO_VIEWER,1,[define to disable photo viewing])
339       fi],enableval=yes)
340   gnupg_cv_enable_photo_viewers=$enableval
341   AC_MSG_RESULT($enableval)
342
343   if test "$gnupg_cv_enable_photo_viewers" = yes ; then
344     AC_MSG_CHECKING([whether to use a fixed photo ID viewer])
345     AC_ARG_WITH(photo-viewer,
346         [  --with-photo-viewer=FIXED_VIEWER  set a fixed photo ID viewer],
347         [if test "$withval" = yes ; then
348            withval=no
349         elif test "$withval" != no ; then
350            AC_DEFINE_UNQUOTED(FIXED_PHOTO_VIEWER,"$withval",
351                             [if set, restrict photo-viewer to this])
352         fi],withval=no)
353     AC_MSG_RESULT($withval)
354   fi
355 fi
356
357
358 #
359 # Check for the key/uid cache size.  This can't be zero, but can be
360 # pretty small on embedded systems.  This is used for the gpg part.
361 #
362 AC_MSG_CHECKING([for the size of the key and uid cache])
363 AC_ARG_ENABLE(key-cache,
364         AC_HELP_STRING([--enable-key-cache=SIZE],
365                        [Set key cache to SIZE (default 4096)]),,enableval=4096)
366 if test "$enableval" = "no"; then
367    enableval=5
368 elif test "$enableval" = "yes" || test "$enableval" = ""; then
369    enableval=4096
370 fi
371 changequote(,)dnl
372 key_cache_size=`echo "$enableval" | sed 's/[A-Za-z]//g'`
373 changequote([,])dnl
374 if test "$enableval" != "$key_cache_size" || test "$key_cache_size" -lt 5; then
375    AC_MSG_ERROR([invalid key-cache size])
376 fi
377 AC_MSG_RESULT($key_cache_size)
378 AC_DEFINE_UNQUOTED(PK_UID_CACHE_SIZE,$key_cache_size,
379                   [Size of the key and UID caches])
380
381
382
383 #
384 # Check whether we want to use Linux capabilities
385 #
386 AC_MSG_CHECKING([whether use of capabilities is requested])
387 AC_ARG_WITH(capabilities,
388     [  --with-capabilities     use linux capabilities [default=no]],
389 [use_capabilities="$withval"],[use_capabilities=no])
390 AC_MSG_RESULT($use_capabilities)
391
392 #
393 # Check whether to disable the card support
394 AC_MSG_CHECKING([whether smartcard support is requested])
395 AC_ARG_ENABLE(card-support,
396               AC_HELP_STRING([--disable-card-support],
397                              [disable smartcard support]),
398               card_support=$enableval)
399 AC_MSG_RESULT($card_support)
400 if test "$card_support" = yes ; then
401   AC_DEFINE(ENABLE_CARD_SUPPORT,1,[Define to include smartcard support])
402 else
403   build_scdaemon=no
404 fi
405
406 #
407 # Allow disabling of internal CCID support.
408 # It is defined only after we confirm the library is available later
409 #
410 AC_MSG_CHECKING([whether to enable the internal CCID driver])
411 AC_ARG_ENABLE(ccid-driver,
412               AC_HELP_STRING([--disable-ccid-driver],
413                              [disable the internal CCID driver]),
414               use_ccid_driver=$enableval)
415 AC_MSG_RESULT($use_ccid_driver)
416
417 AC_MSG_CHECKING([whether to auto start dirmngr])
418 AC_ARG_ENABLE(dirmngr-auto-start,
419               AC_HELP_STRING([--disable-dirmngr-auto-start],
420                              [disable auto starting of the dirmngr]),
421               dirmngr_auto_start=$enableval)
422 AC_MSG_RESULT($dirmngr_auto_start)
423 if test "$dirmngr_auto_start" = yes ; then
424     AC_DEFINE(USE_DIRMNGR_AUTO_START,1,
425               [Define to enable auto starting of the dirmngr])
426 fi
427
428
429 #
430 # To avoid double inclusion of config.h which might happen at some
431 # places, we add the usual double inclusion protection at the top of
432 # config.h.
433 #
434 AH_TOP([
435 #ifndef GNUPG_CONFIG_H_INCLUDED
436 #define GNUPG_CONFIG_H_INCLUDED
437 ])
438
439 #
440 # Stuff which goes at the bottom of config.h.
441 #
442 AH_BOTTOM([
443 /* This is the major version number of GnuPG so that
444    source included files can test for this.  Note, that
445    we use 2 here even for GnuPG 1.9.x. */
446 #define GNUPG_MAJOR_VERSION 2
447
448 /* Now to separate file name parts.
449    Please note that the string version must not contain more
450    than one character because the code assumes strlen()==1 */
451 #ifdef HAVE_DOSISH_SYSTEM
452 #define DIRSEP_C '\\'
453 #define DIRSEP_S "\\"
454 #define EXTSEP_C '.'
455 #define EXTSEP_S "."
456 #define PATHSEP_C ';'
457 #define PATHSEP_S ";"
458 #define EXEEXT_S ".exe"
459 #else
460 #define DIRSEP_C '/'
461 #define DIRSEP_S "/"
462 #define EXTSEP_C '.'
463 #define EXTSEP_S "."
464 #define PATHSEP_C ':'
465 #define PATHSEP_S ":"
466 #define EXEEXT_S ""
467 #endif
468
469 /* This is the same as VERSION, but should be overridden if the
470    platform cannot handle things like dots '.' in filenames. Set
471    SAFE_VERSION_DOT and SAFE_VERSION_DASH to whatever SAFE_VERSION
472    uses for dots and dashes. */
473 #define SAFE_VERSION VERSION
474 #define SAFE_VERSION_DOT  '.'
475 #define SAFE_VERSION_DASH '-'
476
477 /* Some global constants. */
478 #ifdef HAVE_DOSISH_SYSTEM
479 # ifdef HAVE_DRIVE_LETTERS
480 #  define GNUPG_DEFAULT_HOMEDIR "c:/gnupg"
481 # else
482 #  define GNUPG_DEFAULT_HOMEDIR "/gnupg"
483 # endif
484 #elif defined(__VMS)
485 #define GNUPG_DEFAULT_HOMEDIR "/SYS$LOGIN/gnupg"
486 #else
487 #define GNUPG_DEFAULT_HOMEDIR "~/.gnupg"
488 #endif
489 #define GNUPG_PRIVATE_KEYS_DIR  "private-keys-v1.d"
490 #define GNUPG_OPENPGP_REVOC_DIR "openpgp-revocs.d"
491
492 /* For some systems (DOS currently), we hardcode the path here.  For
493    POSIX systems the values are constructed by the Makefiles, so that
494    the values may be overridden by the make invocations; this is to
495    comply with the GNU coding standards.  Note that these values are
496    only defaults.  */
497 #ifdef HAVE_DOSISH_SYSTEM
498 # ifdef HAVE_DRIVE_LETTERS
499 #  define GNUPG_BINDIR      "c:\\gnupg"
500 #  define GNUPG_LIBEXECDIR  "c:\\gnupg"
501 #  define GNUPG_LIBDIR      "c:\\gnupg"
502 #  define GNUPG_DATADIR     "c:\\gnupg"
503 #  define GNUPG_SYSCONFDIR  "c:\\gnupg"
504 # else
505 #  define GNUPG_BINDIR      "\\gnupg"
506 #  define GNUPG_LIBEXECDIR  "\\gnupg"
507 #  define GNUPG_LIBDIR      "\\gnupg"
508 #  define GNUPG_DATADIR     "\\gnupg"
509 #  define GNUPG_SYSCONFDIR  "\\gnupg"
510 # endif
511 #endif
512
513 /* Derive some other constants. */
514 #if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
515 #define EXEC_TEMPFILE_ONLY
516 #endif
517
518
519 /* We didn't define endianness above, so get it from OS macros.  This
520    is intended for making fat binary builds on OS X. */
521 #if !defined(BIG_ENDIAN_HOST) && !defined(LITTLE_ENDIAN_HOST)
522 #if defined(__BIG_ENDIAN__)
523 #define BIG_ENDIAN_HOST 1
524 #elif defined(__LITTLE_ENDIAN__)
525 #define LITTLE_ENDIAN_HOST 1
526 #else
527 #error "No endianness found"
528 #endif
529 #endif
530
531
532 /* Hack used for W32: ldap.m4 also tests for the ASCII version of
533    ldap_start_tls_s because that is the actual symbol used in the
534    library.  winldap.h redefines it to our commonly used value,
535    thus we define our usual macro here.  */
536 #ifdef HAVE_LDAP_START_TLS_SA
537 # ifndef HAVE_LDAP_START_TLS_S
538 #  define HAVE_LDAP_START_TLS_S 1
539 # endif
540 #endif
541
542 /* Provide the es_ macro for estream.  */
543 #define GPGRT_ENABLE_ES_MACROS 1
544
545 /* Tell libgcrypt not to use its own libgpg-error implementation. */
546 #define USE_LIBGPG_ERROR 1
547
548 /* Tell Libgcrypt not to include deprecated definitions.  */
549 #define GCRYPT_NO_DEPRECATED 1
550
551 /* Our HTTP code is used in estream mode.  */
552 #define HTTP_USE_ESTREAM 1
553
554 /* Under W32 we do an explicit socket initialization, thus we need to
555    avoid the on-demand initialization which would also install an atexit
556    handler.  */
557 #define HTTP_NO_WSASTARTUP
558
559 /* Under Windows we use the gettext code from libgpg-error.  */
560 #define GPG_ERR_ENABLE_GETTEXT_MACROS
561
562 /* Under WindowsCE we use the strerror replacement from libgpg-error.  */
563 #define GPG_ERR_ENABLE_ERRNO_MACROS
564
565 #endif /*GNUPG_CONFIG_H_INCLUDED*/
566 ])
567
568
569 AM_MAINTAINER_MODE
570 AC_ARG_VAR(SYSROOT,[locate config scripts also below that directory])
571
572 # Checks for programs.
573 AC_MSG_NOTICE([checking for programs])
574 AC_PROG_MAKE_SET
575 AM_SANITY_CHECK
576 missing_dir=`cd $ac_aux_dir && pwd`
577 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
578 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
579 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
580 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
581 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
582 AM_SILENT_RULES
583 AC_PROG_AWK
584 AC_PROG_CC
585 AC_PROG_CPP
586 AM_PROG_CC_C_O
587 if test "x$ac_cv_prog_cc_c89" = "xno" ; then
588   AC_MSG_ERROR([[No C-89 compiler found]])
589 fi
590 AC_PROG_INSTALL
591 AC_PROG_LN_S
592 AC_PROG_RANLIB
593 AC_CHECK_TOOL(AR, ar, :)
594 AC_PATH_PROG(PERL,"perl")
595 AC_CHECK_TOOL(WINDRES, windres, :)
596 AC_ISC_POSIX
597 AC_SYS_LARGEFILE
598 GNUPG_CHECK_USTAR
599
600
601 # We need to compile and run a program on the build machine.  A
602 # comment in libgpg-error says that the AC_PROG_CC_FOR_BUILD macro in
603 # the AC archive is broken for autoconf 2.57.  Given that there is no
604 # newer version of that macro, we assume that it is also broken for
605 # autoconf 2.61 and thus we use a simple but usually sufficient
606 # approach.
607 AC_MSG_CHECKING(for cc for build)
608 if test "$cross_compiling" = "yes"; then
609   CC_FOR_BUILD="${CC_FOR_BUILD-cc}"
610 else
611   CC_FOR_BUILD="${CC_FOR_BUILD-$CC}"
612 fi
613 AC_MSG_RESULT($CC_FOR_BUILD)
614 AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler])
615
616 # We need to call this macro because other pkg-config macros are
617 # not always used.
618 PKG_PROG_PKG_CONFIG
619
620
621 try_gettext=yes
622 require_iconv=yes
623 have_dosish_system=no
624 have_w32_system=no
625 have_w32ce_system=no
626 have_android_system=no
627 run_tests=yes
628 use_simple_gettext=no
629 use_ldapwrapper=yes
630 mmap_needed=yes
631 case "${host}" in
632     *-mingw32*)
633         # special stuff for Windoze NT
634         ac_cv_have_dev_random=no
635         AC_DEFINE(USE_ONLY_8DOT3,1,
636                   [Set this to limit filenames to the 8.3 format])
637         AC_DEFINE(USE_SIMPLE_GETTEXT,1,
638                   [Because the Unix gettext has too much overhead on
639                    MingW32 systems and these systems lack Posix functions,
640                    we use a simplified version of gettext])
641         have_dosish_system=yes
642         have_w32_system=yes
643         require_iconv=no
644         run_tests=no
645         use_ldapwrapper=no  # Fixme: Do this only for CE.
646         case "${host}" in
647           *-mingw32ce*)
648             have_w32ce_system=yes
649             ;;
650           *)
651             AC_DEFINE(HAVE_DRIVE_LETTERS,1,
652                       [Defined if the OS supports drive letters.])
653             ;;
654         esac
655         try_gettext="no"
656         use_simple_gettext=yes
657         mmap_needed=no
658         ;;
659     i?86-emx-os2 | i?86-*-os2*emx )
660         # OS/2 with the EMX environment
661         ac_cv_have_dev_random=no
662         AC_DEFINE(HAVE_DRIVE_LETTERS)
663         have_dosish_system=yes
664         try_gettext="no"
665         ;;
666
667     i?86-*-msdosdjgpp*)
668         # DOS with the DJGPP environment
669         ac_cv_have_dev_random=no
670         AC_DEFINE(HAVE_DRIVE_LETTERS)
671         have_dosish_system=yes
672         try_gettext="no"
673         ;;
674
675     *-*-hpux*)
676         if test -z "$GCC" ; then
677             CFLAGS="-Ae -D_HPUX_SOURCE $CFLAGS"
678         fi
679         ;;
680     *-dec-osf4*)
681         if test -z "$GCC" ; then
682             # Suppress all warnings
683             # to get rid of the unsigned/signed char mismatch warnings.
684             CFLAGS="-w $CFLAGS"
685         fi
686         ;;
687     *-dec-osf5*)
688         if test -z "$GCC" ; then
689             # Use the newer compiler `-msg_disable ptrmismatch1' to
690             # get rid of the unsigned/signed char mismatch warnings.
691             # Using this may hide other pointer mismatch warnings, but
692             # it at least lets other warning classes through
693             CFLAGS="-msg_disable ptrmismatch1 $CFLAGS"
694         fi
695         ;;
696     m68k-atari-mint)
697         ;;
698     *-linux-androideabi)
699         have_android_system=yes
700         # Android is fully utf-8 and we do not want to use iconv to
701         # keeps things simple
702         require_iconv=no
703         run_tests=no
704         ;;
705     *)
706        ;;
707 esac
708
709 if test "$have_dosish_system" = yes; then
710    AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
711              [Defined if we run on some of the PCDOS like systems
712               (DOS, Windoze. OS/2) with special properties like
713               no file modes, case insensitive file names and preferred
714               use of backslashes as directory name separators.])
715 fi
716 AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
717
718 AM_CONDITIONAL(USE_SIMPLE_GETTEXT, test x"$use_simple_gettext" = xyes)
719
720 if test "$have_w32_system" = yes; then
721    AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
722    if test "$have_w32ce_system" = yes; then
723       AC_DEFINE(HAVE_W32CE_SYSTEM,1,[Defined if we run on WindowsCE])
724    fi
725 fi
726 AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
727 AM_CONDITIONAL(HAVE_W32CE_SYSTEM, test "$have_w32ce_system" = yes)
728
729 if test "$have_android_system" = yes; then
730    AC_DEFINE(HAVE_ANDROID_SYSTEM,1, [Defined if we build for an Android system])
731 fi
732 AM_CONDITIONAL(HAVE_ANDROID_SYSTEM, test "$have_android_system" = yes)
733
734 if test "$run_tests" = yes; then
735    AC_DEFINE(RUN_TESTS,1, [Defined if we should run the tests])
736 fi
737 AM_CONDITIONAL(RUN_TESTS, test "$run_tests" = yes)
738
739
740 # (These need to go after AC_PROG_CC so that $EXEEXT is defined)
741 AC_DEFINE_UNQUOTED(EXEEXT,"$EXEEXT",[The executable file extension, if any])
742
743
744 #
745 # Checks for libraries.
746 #
747 AC_MSG_NOTICE([checking for libraries])
748
749
750 #
751 # libgpg-error is a library with error codes shared between GnuPG
752 # related projects.
753 #
754 AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION",
755                   have_gpg_error=yes,have_gpg_error=no)
756
757
758 #
759 # Libgcrypt is our generic crypto library
760 #
761 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION",
762         have_libgcrypt=yes,have_libgcrypt=no)
763
764
765 #
766 # libassuan is used for IPC
767 #
768 AM_PATH_LIBASSUAN("$NEED_LIBASSUAN_API:$NEED_LIBASSUAN_VERSION",
769                   have_libassuan=yes,have_libassuan=no)
770 if test "$have_libassuan" = "yes"; then
771   AC_DEFINE_UNQUOTED(GNUPG_LIBASSUAN_VERSION, "$libassuan_version",
772                      [version of the libassuan library])
773   show_tor_support="only .onion"
774 fi
775
776
777 #
778 # libksba is our X.509 support library
779 #
780 AM_PATH_KSBA("$NEED_KSBA_API:$NEED_KSBA_VERSION",have_ksba=yes,have_ksba=no)
781
782
783 #
784 # libusb allows us to use the integrated CCID smartcard reader driver.
785 #
786 # FiXME: Use GNUPG_CHECK_LIBUSB and modify to use separate AC_SUBSTs.
787 if test "$use_ccid_driver" = auto || test "$use_ccid_driver" = yes; then
788    case "${host}" in
789      *-mingw32*)
790        LIBUSB_LIBS=
791        LIBUSB_CPPFLAGS=
792        ;;
793      *-*-darwin*)
794        LIBUSB_LIBS="-lusb-1.0 -Wl,-framework,CoreFoundation -Wl,-framework,IOKit"
795        ;;
796      *-*-freebsd*)
797        # FreeBSD has a native 1.0 compatible library by -lusb.
798        LIBUSB_LIBS="-lusb"
799        ;;
800      *)
801        LIBUSB_LIBS="-lusb-1.0"
802        ;;
803    esac
804 fi
805 if test x"$LIBUSB_LIBS" != x ; then
806    AC_CHECK_LIB(usb-1.0, libusb_init,
807                 [ LIBUSB_LIBS="$LIBUSB_LIBS"
808                   have_libusb=yes ])
809    AC_MSG_CHECKING([libusb include dir])
810    usb_incdir_found="no"
811    for _incdir in "" "/usr/include/libusb-1.0" "/usr/local/include/libusb-1.0"; do
812      _libusb_save_cppflags=$CPPFLAGS
813      if test -n "${_incdir}"; then
814        CPPFLAGS="-I${_incdir} ${CPPFLAGS}"
815      fi
816      AC_PREPROC_IFELSE([AC_LANG_SOURCE([[@%:@include <libusb.h>]])],
817      [usb_incdir=${_incdir}; usb_incdir_found="yes"], [])
818      CPPFLAGS=${_libusb_save_cppflags}
819      if test "$usb_incdir_found" = "yes"; then
820        break
821      fi
822    done
823    if test "$usb_incdir_found" = "yes"; then
824      AC_MSG_RESULT([${usb_incdir}])
825    else
826      AC_MSG_RESULT([not found])
827      usb_incdir=""
828      have_libusb=no
829      if test "$use_ccid_driver" != yes; then
830        use_ccid_driver=no
831      fi
832      LIBUSB_LIBS=""
833    fi
834
835    if test "$have_libusb" = yes; then
836      AC_DEFINE(HAVE_LIBUSB,1, [defined if libusb is available])
837    fi
838    if test x"$usb_incdir" = x; then
839      LIBUSB_CPPFLAGS=""
840    else
841      LIBUSB_CPPFLAGS="-I${usb_incdir}"
842    fi
843 fi
844 AC_SUBST(LIBUSB_LIBS)
845 AC_SUBST(LIBUSB_CPPFLAGS)
846
847 #
848 # Check wether it is necessary to link against libdl.
849 # (For example to load libpcsclite)
850 #
851 gnupg_dlopen_save_libs="$LIBS"
852 LIBS=""
853 AC_SEARCH_LIBS(dlopen, c dl,,,)
854 DL_LIBS=$LIBS
855 AC_SUBST(DL_LIBS)
856 LIBS="$gnupg_dlopen_save_libs"
857
858
859 # Checks for g10
860
861 AC_ARG_ENABLE(sqlite,
862                 AC_HELP_STRING([--disable-sqlite],
863                                [disable the use of SQLITE]),
864               try_sqlite=$enableval, try_sqlite=yes)
865
866 if test x"$use_tofu" = xyes ; then
867   if test x"$try_sqlite" = xyes ; then
868     PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= $NEED_SQLITE_VERSION],
869                                  [have_sqlite=yes],
870                                  [have_sqlite=no])
871   fi
872   if test "$have_sqlite" = "yes"; then
873     :
874     AC_SUBST([SQLITE3_CFLAGS])
875     AC_SUBST([SQLITE3_LIBS])
876   else
877     use_tofu=no
878     tmp=$(echo "$SQLITE3_PKG_ERRORS" | tr '\n' '\v' | sed 's/\v/\n*** /g')
879     AC_MSG_WARN([[
880 ***
881 *** Building without SQLite support - TOFU disabled
882 ***
883 *** $tmp]])
884   fi
885 fi
886
887 AM_CONDITIONAL(SQLITE3, test "$have_sqlite" = "yes")
888
889 if test x"$use_tofu" = xyes ; then
890     AC_DEFINE(USE_TOFU, 1, [Enable to build the TOFU code])
891 fi
892
893
894 # Checks for g13
895
896 AC_PATH_PROG(ENCFS, encfs, /usr/bin/encfs)
897 AC_DEFINE_UNQUOTED(ENCFS,
898         "${ENCFS}", [defines the filename of the encfs program])
899
900 AC_PATH_PROG(FUSERMOUNT, fusermount, /usr/bin/fusermount)
901 AC_DEFINE_UNQUOTED(FUSERMOUNT,
902         "${FUSERMOUNT}", [defines the filename of the fusermount program])
903
904
905 # Checks for dirmngr
906
907
908 #
909 # Checks for symcryptrun:
910 #
911
912 # libutil has openpty() and login_tty().
913 AC_CHECK_LIB(util, openpty,
914               [ LIBUTIL_LIBS="$LIBUTIL_LIBS -lutil"
915                 AC_DEFINE(HAVE_LIBUTIL,1,
916                          [defined if libutil is available])
917              ])
918 AC_SUBST(LIBUTIL_LIBS)
919
920 # shred is used to clean temporary plain text files.
921 AC_PATH_PROG(SHRED, shred, /usr/bin/shred)
922 AC_DEFINE_UNQUOTED(SHRED,
923         "${SHRED}", [defines the filename of the shred program])
924
925
926 #
927 # Check whether the nPth library is available
928 #
929 AM_PATH_NPTH("$NEED_NPTH_API:$NEED_NPTH_VERSION",have_npth=yes,have_npth=no)
930 if test "$have_npth" = "yes"; then
931   AC_DEFINE(HAVE_NPTH, 1,
932               [Defined if the New Portable Thread Library is available])
933   AC_DEFINE(USE_NPTH, 1,
934               [Defined if support for nPth is requested and nPth is available])
935 else
936   AC_MSG_WARN([[
937 ***
938 *** To support concurrent access for example in gpg-agent and the SCdaemon
939 *** we need the support of the New Portable Threads Library.
940 ***]])
941 fi
942
943
944 #
945 # NTBTLS is our TLS library.  If it is not available fallback to
946 # GNUTLS.
947 #
948 AC_ARG_ENABLE(ntbtls,
949               AC_HELP_STRING([--disable-ntbtls],
950                              [disable the use of NTBTLS as TLS library]),
951               try_ntbtls=$enableval, try_ntbtls=yes)
952 if test x"$try_ntbtls" = xyes ; then
953   AM_PATH_NTBTLS("$NEED_NTBTLS_API:$NEED_NTBTLS_VERSION",
954                  [have_ntbtls=yes],[have_ntbtls=no])
955 fi
956 if test "$have_ntbtls" = yes ; then
957    use_tls_library=ntbtls
958    AC_DEFINE(HTTP_USE_NTBTLS, 1, [Enable NTBTLS support in http.c])
959 else
960   AC_ARG_ENABLE(gnutls,
961                 AC_HELP_STRING([--disable-gnutls],
962                                [disable GNUTLS as fallback TLS library]),
963                 try_gnutls=$enableval, try_gnutls=yes)
964   if test x"$try_gnutls" = xyes ; then
965     PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= $NEED_GNUTLS_VERSION],
966                                    [have_gnutls=yes],
967                                    [have_gnutls=no])
968   fi
969   if test "$have_gnutls" = "yes"; then
970     AC_SUBST([LIBGNUTLS_CFLAGS])
971     AC_SUBST([LIBGNUTLS_LIBS])
972     use_tls_library=gnutls
973     AC_DEFINE(HTTP_USE_GNUTLS, 1, [Enable GNUTLS support in http.c])
974   else
975     tmp=$(echo "$LIBGNUTLS_PKG_ERRORS" | tr '\n' '\v' | sed 's/\v/\n*** /g')
976     AC_MSG_WARN([[
977 ***
978 *** Building without NTBTLS and GNUTLS - no TLS access to keyservers.
979 ***
980 *** $tmp]])
981   fi
982 fi
983
984
985 AC_MSG_NOTICE([checking for networking options])
986
987 #
988 # Must check for network library requirements before doing link tests
989 # for ldap, for example. If ldap libs are static (or dynamic and without
990 # ELF runtime link paths), then link will fail and LDAP support won't
991 # be detected.
992 #
993 AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname,
994         [NETLIBS="-lnsl $NETLIBS"]))
995 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
996         [NETLIBS="-lsocket $NETLIBS"]))
997
998
999 #
1000 # Check for ADNS.
1001 #
1002 _cppflags="${CPPFLAGS}"
1003 _ldflags="${LDFLAGS}"
1004 AC_ARG_WITH(adns,
1005             AC_HELP_STRING([--with-adns=DIR],
1006                            [look for the adns library in DIR]),
1007             [if test -d "$withval"; then
1008                CPPFLAGS="${CPPFLAGS} -I$withval/include"
1009                LDFLAGS="${LDFLAGS} -L$withval/lib"
1010              fi])
1011 if test "$with_adns" != "no"; then
1012   AC_CHECK_HEADERS(adns.h,AC_CHECK_LIB(adns, adns_init_strcfg,[have_adns=yes]))
1013   AC_CHECK_FUNCS(adns_free)
1014   AC_MSG_CHECKING([if adns supports adns_if_tormode])
1015   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1016     #include <adns.h>
1017     adns_initflags flags = adns_if_tormode;
1018   ]],[])],[adns_if_tormode=yes],[adns_if_tormode=no])
1019   AC_MSG_RESULT($adns_if_tormode)
1020   if test x"$adns_if_tormode" = xyes; then
1021     AC_DEFINE(HAVE_ADNS_IF_TORMODE,1,[define if adns_if_tormode is available])
1022     if test "$show_tor_support" != "no"; then
1023       show_tor_support=yes
1024     fi
1025   fi
1026 fi
1027 CPPFLAGS=${_cppflags}
1028 LDFLAGS=${_ldflags}
1029 if test "$have_adns" = "yes"; then
1030   ADNSLIBS="-ladns"
1031 fi
1032
1033
1034 #
1035 # Now try for the resolver functions so we can use DNS for SRV, PA and CERT.
1036 #
1037 AC_ARG_ENABLE(dns-srv,
1038               AC_HELP_STRING([--disable-dns-srv],
1039                              [disable the use of DNS SRV in HKP and HTTP]),
1040               use_dns_srv=$enableval,use_dns_srv=yes)
1041
1042 AC_ARG_ENABLE(dns-cert,
1043    AC_HELP_STRING([--disable-dns-cert],
1044         [disable the use of CERT records in DNS]),
1045    use_dns_cert=$enableval,use_dns_cert=yes)
1046
1047 if test x"$use_dns_srv" = xyes || test x"$use_dns_cert" = xyes; then
1048   _dns_save_libs=$LIBS
1049   LIBS=""
1050
1051   if test x"$have_adns" = xyes ; then
1052     # We prefer ADNS.
1053     DNSLIBS="$ADNSLIBS"
1054     AC_DEFINE(USE_ADNS,1,[Use ADNS as resolver library.])
1055
1056     if test x"$use_dns_srv" = xyes ; then
1057         AC_DEFINE(USE_DNS_SRV,1)
1058     fi
1059
1060     if test x"$use_dns_cert" = xyes ; then
1061         AC_DEFINE(USE_DNS_CERT,1,[define to use DNS CERT])
1062     fi
1063   else
1064     # With no ADNS find the system resolver.
1065
1066     # the double underscore thing is a glibc-ism?
1067     AC_SEARCH_LIBS(res_query,resolv bind,,
1068                    AC_SEARCH_LIBS(__res_query,resolv bind,,have_resolver=no))
1069     AC_SEARCH_LIBS(dn_expand,resolv bind,,
1070                    AC_SEARCH_LIBS(__dn_expand,resolv bind,,have_resolver=no))
1071     AC_SEARCH_LIBS(dn_skipname,resolv bind,,
1072                    AC_SEARCH_LIBS(__dn_skipname,resolv bind,,have_resolver=no))
1073
1074     if test x"$have_resolver" != xno ; then
1075
1076       # Make sure that the BIND 4 resolver interface is workable before
1077       # enabling any code that calls it.  At some point I'll rewrite the
1078       # code to use the BIND 8 resolver API.
1079       # We might also want to use adns instead.  Problem with ADNS is that
1080       # it does not support v6.
1081
1082       AC_MSG_CHECKING([whether the resolver is usable])
1083       AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1084 #include <netinet/in.h>
1085 #include <arpa/nameser.h>
1086 #include <resolv.h>]],
1087 [[unsigned char answer[PACKETSZ];
1088   res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);
1089   dn_skipname(0,0);
1090   dn_expand(0,0,0,0,0);
1091 ]])],have_resolver=yes,have_resolver=no)
1092       AC_MSG_RESULT($have_resolver)
1093
1094       # This is Apple-specific and somewhat bizarre as they changed the
1095       # define in bind 8 for some reason.
1096
1097       if test x"$have_resolver" != xyes ; then
1098          AC_MSG_CHECKING(
1099              [whether I can make the resolver usable with BIND_8_COMPAT])
1100         AC_LINK_IFELSE([AC_LANG_PROGRAM([[#define BIND_8_COMPAT
1101 #include <sys/types.h>
1102 #include <netinet/in.h>
1103 #include <arpa/nameser.h>
1104 #include <resolv.h>]],
1105 [[unsigned char answer[PACKETSZ];
1106   res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);
1107   dn_skipname(0,0); dn_expand(0,0,0,0,0);
1108 ]])],[have_resolver=yes ; need_compat=yes])
1109          AC_MSG_RESULT($have_resolver)
1110       fi
1111     fi
1112
1113     if test x"$have_resolver" = xyes ; then
1114       DNSLIBS=$LIBS
1115
1116       if test x"$use_dns_srv" = xyes ; then
1117          AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
1118       fi
1119
1120       if test x"$use_dns_cert" = xyes ; then
1121         AC_DEFINE(USE_DNS_CERT,1,[define to use DNS CERT])
1122       fi
1123
1124       if test x"$need_compat" = xyes ; then
1125         AC_DEFINE(BIND_8_COMPAT,1,[an Apple OSXism])
1126       fi
1127     else
1128       use_dns_srv=no
1129       use_dns_cert=no
1130     fi
1131   fi
1132
1133   LIBS=$_dns_save_libs
1134 fi
1135
1136 AC_SUBST(DNSLIBS)
1137
1138 AM_CONDITIONAL(USE_DNS_SRV, test x"$use_dns_srv" = xyes)
1139
1140
1141 #
1142 # Check for LDAP
1143 #
1144 # Note that running the check changes the variable
1145 # gnupg_have_ldap from "n/a" to "no" or "yes".
1146
1147 AC_ARG_ENABLE(ldap,
1148     AC_HELP_STRING([--disable-ldap],[disable LDAP support]),
1149     [if test "$enableval" = "no"; then gnupg_have_ldap=no; fi])
1150
1151 if test "$gnupg_have_ldap" != "no" ; then
1152   if test "$build_dirmngr" = "yes" ; then
1153      GNUPG_CHECK_LDAP($NETLIBS)
1154      AC_CHECK_LIB(lber, ber_free,
1155                   [ LBER_LIBS="$LBER_LIBS -llber"
1156                     AC_DEFINE(HAVE_LBER,1,
1157                              [defined if liblber is available])
1158                     have_lber=yes
1159                  ])
1160   fi
1161 fi
1162 AC_SUBST(LBER_LIBS)
1163 if test "$gnupg_have_ldap" = "no"; then
1164     AC_MSG_WARN([[
1165 ***
1166 *** Building without LDAP support.
1167 *** No CRL access or X.509 certificate search available.
1168 ***]])
1169 fi
1170
1171 AM_CONDITIONAL(USE_LDAP, [test "$gnupg_have_ldap" = yes])
1172 if test "$gnupg_have_ldap" = yes ; then
1173   AC_DEFINE(USE_LDAP,1,[Defined if LDAP is support])
1174 else
1175  use_ldapwrapper=no
1176 fi
1177
1178 if test "$use_ldapwrapper" = yes; then
1179    AC_DEFINE(USE_LDAPWRAPPER,1, [Build dirmngr with LDAP wrapper process])
1180 fi
1181 AM_CONDITIONAL(USE_LDAPWRAPPER, test "$use_ldapwrapper" = yes)
1182
1183
1184
1185
1186 #
1187 # Check for sendmail
1188 #
1189 # This isn't necessarily sendmail itself, but anything that gives a
1190 # sendmail-ish interface to the outside world.  That includes Exim,
1191 # Postfix, etc.  Basically, anything that can handle "sendmail -t".
1192 AC_ARG_WITH(mailprog,
1193       AC_HELP_STRING([--with-mailprog=NAME],
1194                      [use "NAME -t" for mail transport]),
1195              ,with_mailprog=yes)
1196 if test x"$with_mailprog" = xyes ; then
1197     AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
1198 elif test x"$with_mailprog" != xno ; then
1199     AC_MSG_CHECKING([for a mail transport program])
1200     AC_SUBST(SENDMAIL,$with_mailprog)
1201     AC_MSG_RESULT($with_mailprog)
1202 fi
1203
1204
1205 #
1206 # Construct a printable name of the OS
1207 #
1208 case "${host}" in
1209     *-mingw32ce*)
1210         PRINTABLE_OS_NAME="W32CE"
1211         ;;
1212     *-mingw32*)
1213         PRINTABLE_OS_NAME="MingW32"
1214         ;;
1215     *-*-cygwin*)
1216         PRINTABLE_OS_NAME="Cygwin"
1217         ;;
1218     i?86-emx-os2 | i?86-*-os2*emx )
1219         PRINTABLE_OS_NAME="OS/2"
1220         ;;
1221     i?86-*-msdosdjgpp*)
1222         PRINTABLE_OS_NAME="MSDOS/DJGPP"
1223         try_dynload=no
1224         ;;
1225     *-linux*)
1226         PRINTABLE_OS_NAME="GNU/Linux"
1227         ;;
1228     *)
1229         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
1230         ;;
1231 esac
1232 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
1233                    [A human readable text with the name of the OS])
1234
1235
1236 #
1237 # Checking for iconv
1238 #
1239 if test "$require_iconv" = yes; then
1240   AM_ICONV
1241 else
1242   LIBICONV=
1243   LTLIBICONV=
1244   AC_SUBST(LIBICONV)
1245   AC_SUBST(LTLIBICONV)
1246 fi
1247
1248
1249 #
1250 # Check for gettext
1251 #
1252 # This is "GNU gnupg" - The project-id script from gettext
1253 #                       needs this string
1254 #
1255 AC_MSG_NOTICE([checking for gettext])
1256 AM_PO_SUBDIRS
1257 AM_GNU_GETTEXT_VERSION([0.17])
1258 if test "$try_gettext" = yes; then
1259   AM_GNU_GETTEXT([external],[need-ngettext])
1260
1261   # gettext requires some extra checks.  These really should be part of
1262   # the basic AM_GNU_GETTEXT macro.  TODO: move other gettext-specific
1263   # function checks to here.
1264
1265   AC_CHECK_FUNCS(strchr)
1266 else
1267   USE_NLS=no
1268   USE_INCLUDED_LIBINTL=no
1269   BUILD_INCLUDED_LIBINTL=no
1270   POSUB=po
1271   AC_SUBST(USE_NLS)
1272   AC_SUBST(USE_INCLUDED_LIBINTL)
1273   AC_SUBST(BUILD_INCLUDED_LIBINTL)
1274   AC_SUBST(POSUB)
1275 fi
1276
1277 # We use HAVE_LANGINFO_CODESET in a couple of places.
1278 AM_LANGINFO_CODESET
1279
1280 # Checks required for our use of locales
1281 gt_LC_MESSAGES
1282
1283
1284 #
1285 # SELinux support
1286 #
1287 if test "$selinux_support" = yes ; then
1288   AC_DEFINE(ENABLE_SELINUX_HACKS,1,[Define to enable SELinux support])
1289 fi
1290
1291
1292 #
1293 # Checks for header files.
1294 #
1295 AC_MSG_NOTICE([checking for header files])
1296 AC_HEADER_STDC
1297 AC_CHECK_HEADERS([string.h unistd.h langinfo.h termio.h locale.h getopt.h \
1298                   pty.h utmp.h pwd.h inttypes.h signal.h sys/select.h     \
1299                   signal.h])
1300 AC_HEADER_TIME
1301
1302
1303 #
1304 # Checks for typedefs, structures, and compiler characteristics.
1305 #
1306 AC_MSG_NOTICE([checking for system characteristics])
1307 AC_C_CONST
1308 AC_C_INLINE
1309 AC_C_VOLATILE
1310 AC_TYPE_SIZE_T
1311 AC_TYPE_MODE_T
1312 AC_TYPE_SIGNAL
1313 AC_DECL_SYS_SIGLIST
1314
1315 gl_HEADER_SYS_SOCKET
1316 gl_TYPE_SOCKLEN_T
1317
1318 AC_SEARCH_LIBS([inet_addr], [nsl])
1319
1320 AC_ARG_ENABLE(endian-check,
1321               AC_HELP_STRING([--disable-endian-check],
1322               [disable the endian check and trust the OS provided macros]),
1323               endiancheck=$enableval,endiancheck=yes)
1324
1325 if test x"$endiancheck" = xyes ; then
1326   GNUPG_CHECK_ENDIAN
1327 fi
1328
1329 # fixme: we should get rid of the byte type
1330 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
1331 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
1332 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
1333 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
1334 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
1335
1336 AC_CHECK_SIZEOF(unsigned short)
1337 AC_CHECK_SIZEOF(unsigned int)
1338 AC_CHECK_SIZEOF(unsigned long)
1339 AC_CHECK_SIZEOF(unsigned long long)
1340 AC_HEADER_TIME
1341 AC_CHECK_SIZEOF(time_t,,[[
1342 #include <stdio.h>
1343 #if TIME_WITH_SYS_TIME
1344 # include <sys/time.h>
1345 # include <time.h>
1346 #else
1347 # if HAVE_SYS_TIME_H
1348 #  include <sys/time.h>
1349 # else
1350 #  include <time.h>
1351 # endif
1352 #endif
1353 ]])
1354 GNUPG_TIME_T_UNSIGNED
1355
1356
1357 if test "$ac_cv_sizeof_unsigned_short" = "0" \
1358    || test "$ac_cv_sizeof_unsigned_int" = "0" \
1359    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
1360     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
1361 fi
1362
1363
1364 #
1365 # Checks for library functions.
1366 #
1367 AC_MSG_NOTICE([checking for library functions])
1368 AC_CHECK_DECLS(getpagesize)
1369 AC_FUNC_FSEEKO
1370 AC_FUNC_VPRINTF
1371 AC_FUNC_FORK
1372 AC_CHECK_FUNCS([strerror strlwr tcgetattr mmap canonicalize_file_name])
1373 AC_CHECK_FUNCS([strcasecmp strncasecmp ctermid times gmtime_r strtoull])
1374 AC_CHECK_FUNCS([setenv unsetenv fcntl ftruncate inet_ntop])
1375 AC_CHECK_FUNCS([canonicalize_file_name])
1376 AC_CHECK_FUNCS([gettimeofday getrusage getrlimit setrlimit clock_gettime])
1377 AC_CHECK_FUNCS([atexit raise getpagesize strftime nl_langinfo setlocale])
1378 AC_CHECK_FUNCS([waitpid wait4 sigaction sigprocmask pipe getaddrinfo])
1379 AC_CHECK_FUNCS([ttyname rand ftello fsync stat lstat])
1380 AC_CHECK_FUNCS([memicmp stpcpy strsep strlwr strtoul memmove stricmp strtol \
1381                 memrchr isascii timegm getrusage setrlimit stat setlocale   \
1382                 flockfile funlockfile fopencookie funopen getpwnam getpwuid \
1383                 getenv inet_pton strpbrk])
1384
1385 if test "$have_android_system" = yes; then
1386    # On Android ttyname is a stub but prints an error message.
1387    AC_DEFINE(HAVE_BROKEN_TTYNAME,1,
1388              [Defined if ttyname does not work properly])
1389 fi
1390
1391 AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
1392
1393 # Dirmngr requires mmap on Unix systems.
1394 if test $ac_cv_func_mmap != yes -a $mmap_needed = yes; then
1395   AC_MSG_ERROR([[Sorry, the current implemenation requires mmap.]])
1396 fi
1397
1398 #
1399 # W32 specific test
1400 #
1401 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
1402
1403 #
1404 # Sanity check regex.  Tests adapted from mutt.
1405 #
1406 AC_MSG_CHECKING([whether regular expression support is requested])
1407 AC_ARG_ENABLE(regex,
1408   AC_HELP_STRING([--disable-regex],
1409     [do not handle regular expressions in trust signatures]),
1410   use_regex=$enableval, use_regex=yes)
1411 AC_MSG_RESULT($use_regex)
1412
1413 if test "$use_regex" = yes ; then
1414   _cppflags="${CPPFLAGS}"
1415   _ldflags="${LDFLAGS}"
1416   AC_ARG_WITH(regex,
1417      AC_HELP_STRING([--with-regex=DIR],[look for regex in DIR]),
1418       [
1419       if test -d "$withval" ; then
1420         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1421         LDFLAGS="${LDFLAGS} -L$withval/lib"
1422       fi
1423       ],withval="")
1424
1425   # Does the system have regex functions at all?
1426   AC_SEARCH_LIBS([regcomp], [regex])
1427   AC_CHECK_FUNC(regcomp, gnupg_cv_have_regex=yes, gnupg_cv_have_regex=no)
1428
1429   if test $gnupg_cv_have_regex = no; then
1430     use_regex=no
1431   else
1432     if test x"$cross_compiling" = xyes; then
1433       AC_MSG_WARN([cross compiling; assuming regexp libray is not broken])
1434     else
1435       AC_CACHE_CHECK([whether your system's regexp library is broken],
1436        [gnupg_cv_regex_broken],
1437        AC_TRY_RUN([
1438 #include <unistd.h>
1439 #include <regex.h>
1440 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); }],
1441        gnupg_cv_regex_broken=no, gnupg_cv_regex_broken=yes, gnupg_cv_regex_broken=yes))
1442
1443       if test $gnupg_cv_regex_broken = yes; then
1444         AC_MSG_WARN([your regex is broken - disabling regex use])
1445         use_regex=no
1446       fi
1447     fi
1448   fi
1449   CPPFLAGS="${_cppflags}"
1450   LDFLAGS="${_ldflags}"
1451 fi
1452
1453 if test "$use_regex" != yes ; then
1454   AC_DEFINE(DISABLE_REGEX,1, [Define to disable regular expression support])
1455 fi
1456 AM_CONDITIONAL(DISABLE_REGEX, test x"$use_regex" != xyes)
1457
1458
1459
1460 #
1461 # Do we have zlib? Must do it here because Solaris failed
1462 # when compiling a conftest (due to the "-lz" from LIBS).
1463 # Note that we combine zlib and bzlib2 in ZLIBS.
1464 #
1465 if test "$use_zip" = yes ; then
1466   _cppflags="${CPPFLAGS}"
1467   _ldflags="${LDFLAGS}"
1468   AC_ARG_WITH(zlib,
1469     [  --with-zlib=DIR         use libz in DIR],[
1470       if test -d "$withval"; then
1471         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1472         LDFLAGS="${LDFLAGS} -L$withval/lib"
1473       fi
1474     ])
1475
1476   AC_CHECK_HEADER(zlib.h,
1477      AC_CHECK_LIB(z, deflateInit2_,
1478        [
1479        ZLIBS="-lz"
1480        AC_DEFINE(HAVE_ZIP,1, [Defined if ZIP and ZLIB are supported])
1481        ],
1482        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1483        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
1484 fi
1485
1486
1487 #
1488 # Check whether we can support bzip2
1489 #
1490 if test "$use_bzip2" = yes ; then
1491   _cppflags="${CPPFLAGS}"
1492   _ldflags="${LDFLAGS}"
1493   AC_ARG_WITH(bzip2,
1494      AC_HELP_STRING([--with-bzip2=DIR],[look for bzip2 in DIR]),
1495       [
1496       if test -d "$withval" ; then
1497         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1498         LDFLAGS="${LDFLAGS} -L$withval/lib"
1499       fi
1500       ],withval="")
1501
1502   # Checking alongside stdio.h as an early version of bzip2 (1.0)
1503   # required stdio.h to be included before bzlib.h, and Solaris 9 is
1504   # woefully out of date.
1505   if test "$withval" != no ; then
1506      AC_CHECK_HEADER(bzlib.h,
1507         AC_CHECK_LIB(bz2,BZ2_bzCompressInit,
1508           [
1509           have_bz2=yes
1510           ZLIBS="$ZLIBS -lbz2"
1511           AC_DEFINE(HAVE_BZIP2,1,
1512                   [Defined if the bz2 compression library is available])
1513           ],
1514           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1515           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags},[#include <stdio.h>])
1516   fi
1517 fi
1518 AM_CONDITIONAL(ENABLE_BZIP2_SUPPORT,test x"$have_bz2" = "xyes")
1519 AC_SUBST(ZLIBS)
1520
1521
1522 # Check for readline support
1523 GNUPG_CHECK_READLINE
1524
1525
1526 if test "$development_version" = yes; then
1527     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
1528             [Defined if this is not a regular release])
1529 fi
1530
1531 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
1532
1533 GNUPG_CHECK_GNUMAKE
1534
1535 # Add some extra libs here so that previous tests don't fail for
1536 # mysterious reasons - the final link step should bail out.
1537 # W32SOCKLIBS is also defined so that if can be used for tools not
1538 # requiring any network stuff but linking to code in libcommon which
1539 # tracks in winsock stuff (e.g. init_common_subsystems).
1540 if test "$have_w32_system" = yes; then
1541    if test "$have_w32ce_system" = yes; then
1542      W32SOCKLIBS="-lws2"
1543    else
1544      W32SOCKLIBS="-lws2_32"
1545    fi
1546    NETLIBS="${NETLIBS} ${W32SOCKLIBS}"
1547 fi
1548
1549 AC_SUBST(NETLIBS)
1550 AC_SUBST(W32SOCKLIBS)
1551
1552 #
1553 # Setup gcc specific options
1554 #
1555 AC_MSG_NOTICE([checking for cc features])
1556 if test "$GCC" = yes; then
1557     mycflags=
1558     mycflags_save=$CFLAGS
1559
1560     # Check whether gcc does not emit a diagnositc for unknow -Wno-*
1561     # options.  This is the case for gcc >= 4.6
1562     AC_MSG_CHECKING([if gcc ignores unknown -Wno-* options])
1563     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1564 #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6 )
1565 #kickerror
1566 #endif]],[])],[_gcc_silent_wno=yes],[_gcc_silent_wno=no])
1567     AC_MSG_RESULT($_gcc_silent_wno)
1568
1569     # Note that it is okay to use CFLAGS here because these are just
1570     # warning options and the user should have a chance of overriding
1571     # them.
1572     if test "$USE_MAINTAINER_MODE" = "yes"; then
1573         mycflags="$mycflags -O3 -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
1574         mycflags="$mycflags -Wformat -Wno-format-y2k -Wformat-security"
1575         if test x"$_gcc_silent_wno" = xyes ; then
1576           _gcc_wopt=yes
1577         else
1578           AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers])
1579           CFLAGS="-Wno-missing-field-initializers"
1580           AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
1581                             [_gcc_wopt=yes],[_gcc_wopt=no])
1582           AC_MSG_RESULT($_gcc_wopt)
1583         fi
1584         if test x"$_gcc_wopt" = xyes ; then
1585           mycflags="$mycflags -W -Wno-sign-compare"
1586           mycflags="$mycflags -Wno-missing-field-initializers"
1587         fi
1588
1589         AC_MSG_CHECKING([if gcc supports -Wdeclaration-after-statement])
1590         CFLAGS="-Wdeclaration-after-statement"
1591         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no)
1592         AC_MSG_RESULT($_gcc_wopt)
1593         if test x"$_gcc_wopt" = xyes ; then
1594           mycflags="$mycflags -Wdeclaration-after-statement"
1595         fi
1596     else
1597         mycflags="$mycflags -Wall"
1598     fi
1599
1600     if test x"$_gcc_silent_wno" = xyes ; then
1601       _gcc_psign=yes
1602     else
1603       AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign])
1604       CFLAGS="-Wno-pointer-sign"
1605       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
1606                         [_gcc_psign=yes],[_gcc_psign=no])
1607       AC_MSG_RESULT($_gcc_psign)
1608     fi
1609     if test x"$_gcc_psign" = xyes ; then
1610        mycflags="$mycflags -Wno-pointer-sign"
1611     fi
1612
1613     AC_MSG_CHECKING([if gcc supports -Wpointer-arith])
1614     CFLAGS="-Wpointer-arith"
1615     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_psign=yes,_gcc_psign=no)
1616     AC_MSG_RESULT($_gcc_psign)
1617     if test x"$_gcc_psign" = xyes ; then
1618        mycflags="$mycflags -Wpointer-arith"
1619     fi
1620
1621     CFLAGS="$mycflags $mycflags_save"
1622 fi
1623
1624
1625 #
1626 # This is handy for debugging so the compiler doesn't rearrange
1627 # things and eliminate variables.
1628 #
1629 AC_ARG_ENABLE(optimization,
1630    AC_HELP_STRING([--disable-optimization],
1631                   [disable compiler optimization]),
1632                   [if test $enableval = no ; then
1633                       CFLAGS=`echo $CFLAGS | sed s/-O[[1-9]]\ /-O0\ /g`
1634                    fi])
1635
1636 #
1637 # Add user CFLAGS.
1638 #
1639 CFLAGS="$CFLAGS $CFLAGS_orig"
1640
1641 #
1642 # Decide what to build
1643 #
1644
1645 build_scdaemon_extra=""
1646 if test "$build_scdaemon" = "yes"; then
1647   if test $have_libusb = no; then
1648      build_scdaemon_extra="without internal CCID driver"
1649   fi
1650   if test -n "$build_scdaemon_extra"; then
1651      build_scdaemon_extra="(${build_scdaemon_extra})"
1652   fi
1653 fi
1654
1655
1656 #
1657 # Set variables for use by automake makefiles.
1658 #
1659 AM_CONDITIONAL(BUILD_GPG,         test "$build_gpg" = "yes")
1660 AM_CONDITIONAL(BUILD_GPGSM,       test "$build_gpgsm" = "yes")
1661 AM_CONDITIONAL(BUILD_AGENT,       test "$build_agent" = "yes")
1662 AM_CONDITIONAL(BUILD_SCDAEMON,    test "$build_scdaemon" = "yes")
1663 AM_CONDITIONAL(BUILD_G13,         test "$build_g13" = "yes")
1664 AM_CONDITIONAL(BUILD_DIRMNGR,     test "$build_dirmngr" = "yes")
1665 AM_CONDITIONAL(BUILD_TOOLS,       test "$build_tools" = "yes")
1666 AM_CONDITIONAL(BUILD_DOC,         test "$build_doc" = "yes")
1667 AM_CONDITIONAL(BUILD_SYMCRYPTRUN, test "$build_symcryptrun" = "yes")
1668 AM_CONDITIONAL(BUILD_GPGTAR,      test "$build_gpgtar" = "yes")
1669
1670 AM_CONDITIONAL(ENABLE_CARD_SUPPORT, test "$card_support" = yes)
1671 AM_CONDITIONAL(NO_TRUST_MODELS,     test "$use_trust_models" = no)
1672 AM_CONDITIONAL(USE_TOFU,            test "$use_tofu" = yes)
1673
1674 AM_CONDITIONAL(RUN_GPG_TESTS,
1675                test x$cross_compiling = xno -a "$build_gpg" = yes )
1676
1677 #
1678 # Set some defines for use gpgconf.
1679 #
1680 if test "$build_gpg" = yes ; then
1681     AC_DEFINE(BUILD_WITH_GPG,1,[Defined if GPG is to be build])
1682 fi
1683 if test "$build_gpgsm" = yes ; then
1684     AC_DEFINE(BUILD_WITH_GPGSM,1,[Defined if GPGSM is to be build])
1685 fi
1686 if test "$build_agent" = yes ; then
1687     AC_DEFINE(BUILD_WITH_AGENT,1,[Defined if GPG-AGENT is to be build])
1688 fi
1689 if test "$build_scdaemon" = yes ; then
1690     AC_DEFINE(BUILD_WITH_SCDAEMON,1,[Defined if SCDAEMON is to be build])
1691 fi
1692 if test "$build_dirmngr" = yes ; then
1693     AC_DEFINE(BUILD_WITH_DIRMNGR,1,[Defined if SCDAEMON is to be build])
1694 fi
1695 if test "$build_g13" = yes ; then
1696     AC_DEFINE(BUILD_WITH_G13,1,[Defined if G13 is to be build])
1697 fi
1698
1699
1700 #
1701 # Define Name strings
1702 #
1703 AC_DEFINE_UNQUOTED(GNUPG_NAME, "GnuPG", [The name of the project])
1704
1705 AC_DEFINE_UNQUOTED(GPG_NAME, "gpg", [The name of the OpenPGP tool])
1706 AC_DEFINE_UNQUOTED(GPG_DISP_NAME, "GnuPG", [The displayed name of gpg])
1707
1708 AC_DEFINE_UNQUOTED(GPGSM_NAME, "gpgsm", [The name of the S/MIME tool])
1709 AC_DEFINE_UNQUOTED(GPGSM_DISP_NAME, "GPGSM", [The displayed name of gpgsm])
1710
1711 AC_DEFINE_UNQUOTED(GPG_AGENT_NAME, "gpg-agent", [The name of the agent])
1712 AC_DEFINE_UNQUOTED(GPG_AGENT_DISP_NAME, "GPG Agent",
1713                                         [The displayed name of gpg-agent])
1714
1715 AC_DEFINE_UNQUOTED(SCDAEMON_NAME, "scdaemon", [The name of the scdaemon])
1716 AC_DEFINE_UNQUOTED(SCDAEMON_DISP_NAME, "SCDaemon",
1717                                        [The displayed name of scdaemon])
1718
1719 AC_DEFINE_UNQUOTED(DIRMNGR_NAME, "dirmngr", [The name of the dirmngr])
1720 AC_DEFINE_UNQUOTED(DIRMNGR_DISP_NAME, "DirMngr",
1721                                       [The displayed name of dirmngr])
1722
1723 AC_DEFINE_UNQUOTED(G13_NAME, "g13", [The name of the g13 tool])
1724 AC_DEFINE_UNQUOTED(G13_DISP_NAME, "G13", [The displayed name of g13])
1725
1726 AC_DEFINE_UNQUOTED(GPGCONF_NAME, "gpgconf", [The name of the gpgconf tool])
1727 AC_DEFINE_UNQUOTED(GPGCONF_DISP_NAME, "GPGConf",
1728                                       [The displayed name of gpgconf])
1729
1730 AC_DEFINE_UNQUOTED(GPGTAR_NAME, "gpgtar", [The name of the gpgtar tool])
1731
1732 AC_DEFINE_UNQUOTED(GPG_AGENT_SOCK_NAME, "S.gpg-agent",
1733                    [The name of the agent socket])
1734 AC_DEFINE_UNQUOTED(GPG_AGENT_SSH_SOCK_NAME, "S.gpg-agent.ssh",
1735                    [The name of the agent socket for ssh])
1736 AC_DEFINE_UNQUOTED(DIRMNGR_INFO_NAME, "DIRMNGR_INFO",
1737                    [The name of the dirmngr info envvar])
1738 AC_DEFINE_UNQUOTED(SCDAEMON_SOCK_NAME, "S.scdaemon",
1739                    [The name of the SCdaemon socket])
1740 AC_DEFINE_UNQUOTED(DIRMNGR_SOCK_NAME, "S.dirmngr",
1741                    [The name of the dirmngr socket])
1742
1743 AC_DEFINE_UNQUOTED(GPGEXT_GPG, "gpg", [The standard binary file suffix])
1744
1745 if test "$have_w32_system" = yes; then
1746   AC_DEFINE_UNQUOTED(GNUPG_REGISTRY_DIR, "\\\\Software\\\\GNU\\\\GnuPG",
1747                      [The directory part of the W32 registry keys])
1748 fi
1749
1750
1751 #
1752 # Provide information about the build.
1753 #
1754 BUILD_REVISION="mym4_revision"
1755 AC_SUBST(BUILD_REVISION)
1756 AC_DEFINE_UNQUOTED(BUILD_REVISION, "$BUILD_REVISION",
1757                    [GIT commit id revision used to build this package])
1758
1759 changequote(,)dnl
1760 BUILD_VERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./'`
1761 changequote([,])dnl
1762 BUILD_VERSION="${BUILD_VERSION}mym4_revision_dec"
1763 BUILD_FILEVERSION=`echo "${BUILD_VERSION}" | tr . ,`
1764 AC_SUBST(BUILD_VERSION)
1765 AC_SUBST(BUILD_FILEVERSION)
1766
1767 AC_ARG_ENABLE([build-timestamp],
1768   AC_HELP_STRING([--enable-build-timestamp],
1769                  [set an explicit build timestamp for reproducibility.
1770                   (default is the current time in ISO-8601 format)]),
1771      [if test "$enableval" = "yes"; then
1772         BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date`
1773       else
1774         BUILD_TIMESTAMP="$enableval"
1775       fi],
1776      [BUILD_TIMESTAMP="<none>"])
1777 AC_SUBST(BUILD_TIMESTAMP)
1778 AC_DEFINE_UNQUOTED(BUILD_TIMESTAMP, "$BUILD_TIMESTAMP",
1779                    [The time this package was configured for a build])
1780 BUILD_HOSTNAME="$ac_hostname"
1781 AC_SUBST(BUILD_HOSTNAME)
1782
1783
1784 #
1785 # Print errors here so that they are visible all
1786 # together and the user can acquire them all together.
1787 #
1788 die=no
1789 if test "$have_gpg_error" = "no"; then
1790    die=yes
1791    AC_MSG_NOTICE([[
1792 ***
1793 *** You need libgpg-error to build this program.
1794 **  This library is for example available at
1795 ***   ftp://ftp.gnupg.org/gcrypt/libgpg-error
1796 *** (at least version $NEED_GPG_ERROR_VERSION is required.)
1797 ***]])
1798 fi
1799 if test "$have_libgcrypt" = "no"; then
1800    die=yes
1801    AC_MSG_NOTICE([[
1802 ***
1803 *** You need libgcrypt to build this program.
1804 **  This library is for example available at
1805 ***   ftp://ftp.gnupg.org/gcrypt/libgcrypt/
1806 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API) is required.)
1807 ***]])
1808 fi
1809 if test "$have_libassuan" = "no"; then
1810    die=yes
1811    AC_MSG_NOTICE([[
1812 ***
1813 *** You need libassuan to build this program.
1814 *** This library is for example available at
1815 ***   ftp://ftp.gnupg.org/gcrypt/libassuan/
1816 *** (at least version $NEED_LIBASSUAN_VERSION (API $NEED_LIBASSUAN_API) is required).
1817 ***]])
1818 fi
1819 if test "$have_ksba" = "no"; then
1820     die=yes
1821     AC_MSG_NOTICE([[
1822 ***
1823 *** You need libksba to build this program.
1824 *** This library is for example available at
1825 ***   ftp://ftp.gnupg.org/gcrypt/libksba/
1826 *** (at least version $NEED_KSBA_VERSION using API $NEED_KSBA_API is required).
1827 ***]])
1828 fi
1829 if test "$gnupg_have_ldap" = yes; then
1830   if test "$have_w32ce_system" = yes; then
1831     AC_MSG_NOTICE([[
1832 *** Note that CeGCC might be broken, a package fixing this is:
1833 ***    http://files.kolab.org/local/windows-ce/
1834 ***                           source/wldap32_0.1-mingw32ce.orig.tar.gz
1835 ***                           binary/wldap32-ce-arm-dev_0.1-1_all.deb
1836 ***]])
1837    fi
1838 fi
1839 if test "$have_npth" = "no"; then
1840     die=yes
1841     AC_MSG_NOTICE([[
1842 ***
1843 *** It is now required to build with support for the
1844 *** New Portable Threads Library (nPth). Please install this
1845 *** library first.  The library is for example available at
1846 ***   ftp://ftp.gnupg.org/gcrypt/npth/
1847 *** (at least version $NEED_NPTH_VERSION (API $NEED_NPTH_API) is required).
1848 ***]])
1849 fi
1850
1851 if test "$require_iconv" = yes; then
1852   if test "$am_func_iconv" != yes; then
1853     die=yes
1854     AC_MSG_NOTICE([[
1855 ***
1856 *** The system does not provide a working iconv function.  Please
1857 *** install a suitable library; for example GNU Libiconv which is
1858 *** available at:
1859 ***   http://ftp.gnu.org/gnu/libiconv/
1860 ***]])
1861   fi
1862 fi
1863
1864 if test "$use_ccid_driver" = yes; then
1865   if test "$have_libusb" != yes; then
1866     die=yes
1867     AC_MSG_NOTICE([[
1868 ***
1869 *** You need libusb to build the internal ccid driver.  Please
1870 *** install a libusb suitable for your system.
1871 ***]])
1872   fi
1873 fi
1874
1875 if test "$die" = "yes"; then
1876     AC_MSG_ERROR([[
1877 ***
1878 *** Required libraries not found. Please consult the above messages
1879 *** and install them before running configure again.
1880 ***]])
1881 fi
1882
1883
1884
1885 AC_CONFIG_FILES([ m4/Makefile
1886 Makefile
1887 po/Makefile.in
1888 common/Makefile
1889 common/w32info-rc.h
1890 kbx/Makefile
1891 g10/Makefile
1892 sm/Makefile
1893 agent/Makefile
1894 scd/Makefile
1895 g13/Makefile
1896 dirmngr/Makefile
1897 tools/gpg-zip
1898 tools/Makefile
1899 doc/Makefile
1900 tests/Makefile
1901 tests/openpgp/Makefile
1902 tests/pkits/Makefile
1903 g10/gpg.w32-manifest
1904 ])
1905
1906
1907 AC_OUTPUT
1908
1909
1910 echo "
1911         GnuPG v${VERSION} has been configured as follows:
1912
1913         Revision:  mym4_revision  (mym4_revision_dec)
1914         Platform:  $PRINTABLE_OS_NAME ($host)
1915
1916         OpenPGP:   $build_gpg
1917         S/MIME:    $build_gpgsm
1918         Agent:     $build_agent
1919         Smartcard: $build_scdaemon $build_scdaemon_extra
1920         G13:       $build_g13
1921         Dirmngr:   $build_dirmngr
1922         Gpgtar:    $build_gpgtar
1923
1924         Protect tool:      $show_gnupg_protect_tool_pgm
1925         LDAP wrapper:      $show_gnupg_dirmngr_ldap_pgm
1926         Default agent:     $show_gnupg_agent_pgm
1927         Default pinentry:  $show_gnupg_pinentry_pgm
1928         Default scdaemon:  $show_gnupg_scdaemon_pgm
1929         Default dirmngr:   $show_gnupg_dirmngr_pgm
1930
1931         Dirmngr auto start:  $dirmngr_auto_start
1932         Readline support:    $gnupg_cv_have_readline
1933         LDAP support:        $gnupg_have_ldap
1934         DNS SRV support:     $use_dns_srv
1935         TLS support:         $use_tls_library
1936         TOFU support:        $use_tofu
1937         Tor support:         $show_tor_support
1938 "
1939 if test x"$use_regex" != xyes ; then
1940 echo "
1941         Warning: No regular expression support available.
1942                  OpenPGP trust signatures won't work.
1943                  gpg-check-pattern will not be built.
1944 "
1945 fi
1946 if test "x${gpg_config_script_warn}" != x; then
1947 cat <<G10EOF
1948         Warning: Mismatches between the target platform and the
1949                  to be used libraries have been detected for:
1950                   ${gpg_config_script_warn}
1951                  Please check above for more warning messages.
1952
1953 G10EOF
1954 fi