bb925c51376fcbb3db3f4fed8c51d713bce7d14a
[gnupg.git] / configure.ac
1 # configure.ac - for GnuPG 2.1
2 # Copyright (C) 1998-2012 Free Software Foundation, Inc.
3 # Copyright (C) 1998-2016 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], [14])
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_NAME=
791        LIBUSB_LIBS=
792        LIBUSB_CPPFLAGS=
793        ;;
794      *-*-darwin*)
795        LIBUSB_NAME=usb-1.0
796        LIBUSB_LIBS="-Wl,-framework,CoreFoundation -Wl,-framework,IOKit"
797        ;;
798      *-*-freebsd*)
799        # FreeBSD has a native 1.0 compatible library by -lusb.
800        LIBUSB_NAME=usb
801        LIBUSB_LIBS=
802        ;;
803      *)
804        LIBUSB_NAME=usb-1.0
805        LIBUSB_LIBS=
806        ;;
807    esac
808 fi
809 if test x"$LIBUSB_NAME" != x ; then
810    AC_CHECK_LIB($LIBUSB_NAME, libusb_init,
811                 [ LIBUSB_LIBS="-l$LIBUSB_NAME $LIBUSB_LIBS"
812                   have_libusb=yes ])
813    AC_MSG_CHECKING([libusb include dir])
814    usb_incdir_found="no"
815    for _incdir in "" "/usr/include/libusb-1.0" "/usr/local/include/libusb-1.0"; do
816      _libusb_save_cppflags=$CPPFLAGS
817      if test -n "${_incdir}"; then
818        CPPFLAGS="-I${_incdir} ${CPPFLAGS}"
819      fi
820      AC_PREPROC_IFELSE([AC_LANG_SOURCE([[@%:@include <libusb.h>]])],
821      [usb_incdir=${_incdir}; usb_incdir_found="yes"], [])
822      CPPFLAGS=${_libusb_save_cppflags}
823      if test "$usb_incdir_found" = "yes"; then
824        break
825      fi
826    done
827    if test "$usb_incdir_found" = "yes"; then
828      AC_MSG_RESULT([${usb_incdir}])
829    else
830      AC_MSG_RESULT([not found])
831      usb_incdir=""
832      have_libusb=no
833      if test "$use_ccid_driver" != yes; then
834        use_ccid_driver=no
835      fi
836      LIBUSB_LIBS=""
837    fi
838
839    if test "$have_libusb" = yes; then
840      AC_DEFINE(HAVE_LIBUSB,1, [defined if libusb is available])
841    fi
842    if test x"$usb_incdir" = x; then
843      LIBUSB_CPPFLAGS=""
844    else
845      LIBUSB_CPPFLAGS="-I${usb_incdir}"
846    fi
847 fi
848 AC_SUBST(LIBUSB_LIBS)
849 AC_SUBST(LIBUSB_CPPFLAGS)
850
851 #
852 # Check wether it is necessary to link against libdl.
853 # (For example to load libpcsclite)
854 #
855 gnupg_dlopen_save_libs="$LIBS"
856 LIBS=""
857 AC_SEARCH_LIBS(dlopen, c dl,,,)
858 DL_LIBS=$LIBS
859 AC_SUBST(DL_LIBS)
860 LIBS="$gnupg_dlopen_save_libs"
861
862
863 # Checks for g10
864
865 AC_ARG_ENABLE(sqlite,
866                 AC_HELP_STRING([--disable-sqlite],
867                                [disable the use of SQLITE]),
868               try_sqlite=$enableval, try_sqlite=yes)
869
870 if test x"$use_tofu" = xyes ; then
871   if test x"$try_sqlite" = xyes ; then
872     PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= $NEED_SQLITE_VERSION],
873                                  [have_sqlite=yes],
874                                  [have_sqlite=no])
875   fi
876   if test "$have_sqlite" = "yes"; then
877     :
878     AC_SUBST([SQLITE3_CFLAGS])
879     AC_SUBST([SQLITE3_LIBS])
880   else
881     use_tofu=no
882     tmp=$(echo "$SQLITE3_PKG_ERRORS" | tr '\n' '\v' | sed 's/\v/\n*** /g')
883     AC_MSG_WARN([[
884 ***
885 *** Building without SQLite support - TOFU disabled
886 ***
887 *** $tmp]])
888   fi
889 fi
890
891 AM_CONDITIONAL(SQLITE3, test "$have_sqlite" = "yes")
892
893 if test x"$use_tofu" = xyes ; then
894     AC_DEFINE(USE_TOFU, 1, [Enable to build the TOFU code])
895 fi
896
897
898 # Checks for g13
899
900 AC_PATH_PROG(ENCFS, encfs, /usr/bin/encfs)
901 AC_DEFINE_UNQUOTED(ENCFS,
902         "${ENCFS}", [defines the filename of the encfs program])
903
904 AC_PATH_PROG(FUSERMOUNT, fusermount, /usr/bin/fusermount)
905 AC_DEFINE_UNQUOTED(FUSERMOUNT,
906         "${FUSERMOUNT}", [defines the filename of the fusermount program])
907
908
909 # Checks for dirmngr
910
911
912 #
913 # Checks for symcryptrun:
914 #
915
916 # libutil has openpty() and login_tty().
917 AC_CHECK_LIB(util, openpty,
918               [ LIBUTIL_LIBS="$LIBUTIL_LIBS -lutil"
919                 AC_DEFINE(HAVE_LIBUTIL,1,
920                          [defined if libutil is available])
921              ])
922 AC_SUBST(LIBUTIL_LIBS)
923
924 # shred is used to clean temporary plain text files.
925 AC_PATH_PROG(SHRED, shred, /usr/bin/shred)
926 AC_DEFINE_UNQUOTED(SHRED,
927         "${SHRED}", [defines the filename of the shred program])
928
929
930 #
931 # Check whether the nPth library is available
932 #
933 AM_PATH_NPTH("$NEED_NPTH_API:$NEED_NPTH_VERSION",have_npth=yes,have_npth=no)
934 if test "$have_npth" = "yes"; then
935   AC_DEFINE(HAVE_NPTH, 1,
936               [Defined if the New Portable Thread Library is available])
937   AC_DEFINE(USE_NPTH, 1,
938               [Defined if support for nPth is requested and nPth is available])
939 else
940   AC_MSG_WARN([[
941 ***
942 *** To support concurrent access for example in gpg-agent and the SCdaemon
943 *** we need the support of the New Portable Threads Library.
944 ***]])
945 fi
946
947
948 #
949 # NTBTLS is our TLS library.  If it is not available fallback to
950 # GNUTLS.
951 #
952 AC_ARG_ENABLE(ntbtls,
953               AC_HELP_STRING([--disable-ntbtls],
954                              [disable the use of NTBTLS as TLS library]),
955               try_ntbtls=$enableval, try_ntbtls=yes)
956 if test x"$try_ntbtls" = xyes ; then
957   AM_PATH_NTBTLS("$NEED_NTBTLS_API:$NEED_NTBTLS_VERSION",
958                  [have_ntbtls=yes],[have_ntbtls=no])
959 fi
960 if test "$have_ntbtls" = yes ; then
961    use_tls_library=ntbtls
962    AC_DEFINE(HTTP_USE_NTBTLS, 1, [Enable NTBTLS support in http.c])
963 else
964   AC_ARG_ENABLE(gnutls,
965                 AC_HELP_STRING([--disable-gnutls],
966                                [disable GNUTLS as fallback TLS library]),
967                 try_gnutls=$enableval, try_gnutls=yes)
968   if test x"$try_gnutls" = xyes ; then
969     PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= $NEED_GNUTLS_VERSION],
970                                    [have_gnutls=yes],
971                                    [have_gnutls=no])
972   fi
973   if test "$have_gnutls" = "yes"; then
974     AC_SUBST([LIBGNUTLS_CFLAGS])
975     AC_SUBST([LIBGNUTLS_LIBS])
976     use_tls_library=gnutls
977     AC_DEFINE(HTTP_USE_GNUTLS, 1, [Enable GNUTLS support in http.c])
978   else
979     tmp=$(echo "$LIBGNUTLS_PKG_ERRORS" | tr '\n' '\v' | sed 's/\v/\n*** /g')
980     AC_MSG_WARN([[
981 ***
982 *** Building without NTBTLS and GNUTLS - no TLS access to keyservers.
983 ***
984 *** $tmp]])
985   fi
986 fi
987
988
989 AC_MSG_NOTICE([checking for networking options])
990
991 #
992 # Must check for network library requirements before doing link tests
993 # for ldap, for example. If ldap libs are static (or dynamic and without
994 # ELF runtime link paths), then link will fail and LDAP support won't
995 # be detected.
996 #
997 AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname,
998         [NETLIBS="-lnsl $NETLIBS"]))
999 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
1000         [NETLIBS="-lsocket $NETLIBS"]))
1001
1002
1003 #
1004 # Check for ADNS.
1005 #
1006 _cppflags="${CPPFLAGS}"
1007 _ldflags="${LDFLAGS}"
1008 AC_ARG_WITH(adns,
1009             AC_HELP_STRING([--with-adns=DIR],
1010                            [look for the adns library in DIR]),
1011             [if test -d "$withval"; then
1012                CPPFLAGS="${CPPFLAGS} -I$withval/include"
1013                LDFLAGS="${LDFLAGS} -L$withval/lib"
1014              fi])
1015 if test "$with_adns" != "no"; then
1016   AC_CHECK_HEADERS(adns.h,AC_CHECK_LIB(adns, adns_init_strcfg,[have_adns=yes]))
1017   AC_CHECK_FUNCS(adns_free)
1018   AC_MSG_CHECKING([if adns supports adns_if_tormode])
1019   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1020     #include <adns.h>
1021     adns_initflags flags = adns_if_tormode;
1022   ]],[])],[adns_if_tormode=yes],[adns_if_tormode=no])
1023   AC_MSG_RESULT($adns_if_tormode)
1024   if test x"$adns_if_tormode" = xyes; then
1025     AC_DEFINE(HAVE_ADNS_IF_TORMODE,1,[define if adns_if_tormode is available])
1026     if test "$show_tor_support" != "no"; then
1027       show_tor_support=yes
1028     fi
1029   fi
1030 fi
1031 CPPFLAGS=${_cppflags}
1032 LDFLAGS=${_ldflags}
1033 if test "$have_adns" = "yes"; then
1034   ADNSLIBS="-ladns"
1035 fi
1036
1037
1038 #
1039 # Now try for the resolver functions so we can use DNS for SRV, PA and CERT.
1040 #
1041 AC_ARG_ENABLE(dns-srv,
1042               AC_HELP_STRING([--disable-dns-srv],
1043                              [disable the use of DNS SRV in HKP and HTTP]),
1044               use_dns_srv=$enableval,use_dns_srv=yes)
1045
1046 AC_ARG_ENABLE(dns-cert,
1047    AC_HELP_STRING([--disable-dns-cert],
1048         [disable the use of CERT records in DNS]),
1049    use_dns_cert=$enableval,use_dns_cert=yes)
1050
1051 if test x"$use_dns_srv" = xyes || test x"$use_dns_cert" = xyes; then
1052   _dns_save_libs=$LIBS
1053   LIBS=""
1054
1055   if test x"$have_adns" = xyes ; then
1056     # We prefer ADNS.
1057     DNSLIBS="$ADNSLIBS"
1058     AC_DEFINE(USE_ADNS,1,[Use ADNS as resolver library.])
1059
1060     if test x"$use_dns_srv" = xyes ; then
1061         AC_DEFINE(USE_DNS_SRV,1)
1062     fi
1063
1064     if test x"$use_dns_cert" = xyes ; then
1065         AC_DEFINE(USE_DNS_CERT,1,[define to use DNS CERT])
1066     fi
1067   else
1068     # With no ADNS find the system resolver.
1069
1070     # the double underscore thing is a glibc-ism?
1071     AC_SEARCH_LIBS(res_query,resolv bind,,
1072                    AC_SEARCH_LIBS(__res_query,resolv bind,,have_resolver=no))
1073     AC_SEARCH_LIBS(dn_expand,resolv bind,,
1074                    AC_SEARCH_LIBS(__dn_expand,resolv bind,,have_resolver=no))
1075     AC_SEARCH_LIBS(dn_skipname,resolv bind,,
1076                    AC_SEARCH_LIBS(__dn_skipname,resolv bind,,have_resolver=no))
1077
1078     if test x"$have_resolver" != xno ; then
1079
1080       # Make sure that the BIND 4 resolver interface is workable before
1081       # enabling any code that calls it.  At some point I'll rewrite the
1082       # code to use the BIND 8 resolver API.
1083       # We might also want to use adns instead.  Problem with ADNS is that
1084       # it does not support v6.
1085
1086       AC_MSG_CHECKING([whether the resolver is usable])
1087       AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1088 #include <netinet/in.h>
1089 #include <arpa/nameser.h>
1090 #include <resolv.h>]],
1091 [[unsigned char answer[PACKETSZ];
1092   res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);
1093   dn_skipname(0,0);
1094   dn_expand(0,0,0,0,0);
1095 ]])],have_resolver=yes,have_resolver=no)
1096       AC_MSG_RESULT($have_resolver)
1097
1098       # This is Apple-specific and somewhat bizarre as they changed the
1099       # define in bind 8 for some reason.
1100
1101       if test x"$have_resolver" != xyes ; then
1102          AC_MSG_CHECKING(
1103              [whether I can make the resolver usable with BIND_8_COMPAT])
1104         AC_LINK_IFELSE([AC_LANG_PROGRAM([[#define BIND_8_COMPAT
1105 #include <sys/types.h>
1106 #include <netinet/in.h>
1107 #include <arpa/nameser.h>
1108 #include <resolv.h>]],
1109 [[unsigned char answer[PACKETSZ];
1110   res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);
1111   dn_skipname(0,0); dn_expand(0,0,0,0,0);
1112 ]])],[have_resolver=yes ; need_compat=yes])
1113          AC_MSG_RESULT($have_resolver)
1114       fi
1115     fi
1116
1117     if test x"$have_resolver" = xyes ; then
1118       DNSLIBS=$LIBS
1119
1120       if test x"$use_dns_srv" = xyes ; then
1121          AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
1122       fi
1123
1124       if test x"$use_dns_cert" = xyes ; then
1125         AC_DEFINE(USE_DNS_CERT,1,[define to use DNS CERT])
1126       fi
1127
1128       if test x"$need_compat" = xyes ; then
1129         AC_DEFINE(BIND_8_COMPAT,1,[an Apple OSXism])
1130       fi
1131     else
1132       use_dns_srv=no
1133       use_dns_cert=no
1134     fi
1135   fi
1136
1137   LIBS=$_dns_save_libs
1138 fi
1139
1140 AC_SUBST(DNSLIBS)
1141
1142 AM_CONDITIONAL(USE_DNS_SRV, test x"$use_dns_srv" = xyes)
1143
1144
1145 #
1146 # Check for LDAP
1147 #
1148 # Note that running the check changes the variable
1149 # gnupg_have_ldap from "n/a" to "no" or "yes".
1150
1151 AC_ARG_ENABLE(ldap,
1152     AC_HELP_STRING([--disable-ldap],[disable LDAP support]),
1153     [if test "$enableval" = "no"; then gnupg_have_ldap=no; fi])
1154
1155 if test "$gnupg_have_ldap" != "no" ; then
1156   if test "$build_dirmngr" = "yes" ; then
1157      GNUPG_CHECK_LDAP($NETLIBS)
1158      AC_CHECK_LIB(lber, ber_free,
1159                   [ LBER_LIBS="$LBER_LIBS -llber"
1160                     AC_DEFINE(HAVE_LBER,1,
1161                              [defined if liblber is available])
1162                     have_lber=yes
1163                  ])
1164   fi
1165 fi
1166 AC_SUBST(LBER_LIBS)
1167 if test "$gnupg_have_ldap" = "no"; then
1168     AC_MSG_WARN([[
1169 ***
1170 *** Building without LDAP support.
1171 *** No CRL access or X.509 certificate search available.
1172 ***]])
1173 fi
1174
1175 AM_CONDITIONAL(USE_LDAP, [test "$gnupg_have_ldap" = yes])
1176 if test "$gnupg_have_ldap" = yes ; then
1177   AC_DEFINE(USE_LDAP,1,[Defined if LDAP is support])
1178 else
1179  use_ldapwrapper=no
1180 fi
1181
1182 if test "$use_ldapwrapper" = yes; then
1183    AC_DEFINE(USE_LDAPWRAPPER,1, [Build dirmngr with LDAP wrapper process])
1184 fi
1185 AM_CONDITIONAL(USE_LDAPWRAPPER, test "$use_ldapwrapper" = yes)
1186
1187
1188
1189
1190 #
1191 # Check for sendmail
1192 #
1193 # This isn't necessarily sendmail itself, but anything that gives a
1194 # sendmail-ish interface to the outside world.  That includes Exim,
1195 # Postfix, etc.  Basically, anything that can handle "sendmail -t".
1196 AC_ARG_WITH(mailprog,
1197       AC_HELP_STRING([--with-mailprog=NAME],
1198                      [use "NAME -t" for mail transport]),
1199              ,with_mailprog=yes)
1200 if test x"$with_mailprog" = xyes ; then
1201     AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
1202 elif test x"$with_mailprog" != xno ; then
1203     AC_MSG_CHECKING([for a mail transport program])
1204     AC_SUBST(SENDMAIL,$with_mailprog)
1205     AC_MSG_RESULT($with_mailprog)
1206 fi
1207
1208
1209 #
1210 # Construct a printable name of the OS
1211 #
1212 case "${host}" in
1213     *-mingw32ce*)
1214         PRINTABLE_OS_NAME="W32CE"
1215         ;;
1216     *-mingw32*)
1217         PRINTABLE_OS_NAME="MingW32"
1218         ;;
1219     *-*-cygwin*)
1220         PRINTABLE_OS_NAME="Cygwin"
1221         ;;
1222     i?86-emx-os2 | i?86-*-os2*emx )
1223         PRINTABLE_OS_NAME="OS/2"
1224         ;;
1225     i?86-*-msdosdjgpp*)
1226         PRINTABLE_OS_NAME="MSDOS/DJGPP"
1227         try_dynload=no
1228         ;;
1229     *-linux*)
1230         PRINTABLE_OS_NAME="GNU/Linux"
1231         ;;
1232     *)
1233         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
1234         ;;
1235 esac
1236 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
1237                    [A human readable text with the name of the OS])
1238
1239
1240 #
1241 # Checking for iconv
1242 #
1243 if test "$require_iconv" = yes; then
1244   AM_ICONV
1245 else
1246   LIBICONV=
1247   LTLIBICONV=
1248   AC_SUBST(LIBICONV)
1249   AC_SUBST(LTLIBICONV)
1250 fi
1251
1252
1253 #
1254 # Check for gettext
1255 #
1256 # This is "GNU gnupg" - The project-id script from gettext
1257 #                       needs this string
1258 #
1259 AC_MSG_NOTICE([checking for gettext])
1260 AM_PO_SUBDIRS
1261 AM_GNU_GETTEXT_VERSION([0.17])
1262 if test "$try_gettext" = yes; then
1263   AM_GNU_GETTEXT([external],[need-ngettext])
1264
1265   # gettext requires some extra checks.  These really should be part of
1266   # the basic AM_GNU_GETTEXT macro.  TODO: move other gettext-specific
1267   # function checks to here.
1268
1269   AC_CHECK_FUNCS(strchr)
1270 else
1271   USE_NLS=no
1272   USE_INCLUDED_LIBINTL=no
1273   BUILD_INCLUDED_LIBINTL=no
1274   POSUB=po
1275   AC_SUBST(USE_NLS)
1276   AC_SUBST(USE_INCLUDED_LIBINTL)
1277   AC_SUBST(BUILD_INCLUDED_LIBINTL)
1278   AC_SUBST(POSUB)
1279 fi
1280
1281 # We use HAVE_LANGINFO_CODESET in a couple of places.
1282 AM_LANGINFO_CODESET
1283
1284 # Checks required for our use of locales
1285 gt_LC_MESSAGES
1286
1287
1288 #
1289 # SELinux support
1290 #
1291 if test "$selinux_support" = yes ; then
1292   AC_DEFINE(ENABLE_SELINUX_HACKS,1,[Define to enable SELinux support])
1293 fi
1294
1295
1296 #
1297 # Checks for header files.
1298 #
1299 AC_MSG_NOTICE([checking for header files])
1300 AC_HEADER_STDC
1301 AC_CHECK_HEADERS([string.h unistd.h langinfo.h termio.h locale.h getopt.h \
1302                   pty.h utmp.h pwd.h inttypes.h signal.h sys/select.h     \
1303                   signal.h])
1304 AC_HEADER_TIME
1305
1306
1307 #
1308 # Checks for typedefs, structures, and compiler characteristics.
1309 #
1310 AC_MSG_NOTICE([checking for system characteristics])
1311 AC_C_CONST
1312 AC_C_INLINE
1313 AC_C_VOLATILE
1314 AC_TYPE_SIZE_T
1315 AC_TYPE_MODE_T
1316 AC_TYPE_SIGNAL
1317 AC_DECL_SYS_SIGLIST
1318
1319 gl_HEADER_SYS_SOCKET
1320 gl_TYPE_SOCKLEN_T
1321
1322 AC_SEARCH_LIBS([inet_addr], [nsl])
1323
1324 AC_ARG_ENABLE(endian-check,
1325               AC_HELP_STRING([--disable-endian-check],
1326               [disable the endian check and trust the OS provided macros]),
1327               endiancheck=$enableval,endiancheck=yes)
1328
1329 if test x"$endiancheck" = xyes ; then
1330   GNUPG_CHECK_ENDIAN
1331 fi
1332
1333 # fixme: we should get rid of the byte type
1334 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
1335 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
1336 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
1337 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
1338 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
1339
1340 AC_CHECK_SIZEOF(unsigned short)
1341 AC_CHECK_SIZEOF(unsigned int)
1342 AC_CHECK_SIZEOF(unsigned long)
1343 AC_CHECK_SIZEOF(unsigned long long)
1344 AC_HEADER_TIME
1345 AC_CHECK_SIZEOF(time_t,,[[
1346 #include <stdio.h>
1347 #if TIME_WITH_SYS_TIME
1348 # include <sys/time.h>
1349 # include <time.h>
1350 #else
1351 # if HAVE_SYS_TIME_H
1352 #  include <sys/time.h>
1353 # else
1354 #  include <time.h>
1355 # endif
1356 #endif
1357 ]])
1358 GNUPG_TIME_T_UNSIGNED
1359
1360
1361 if test "$ac_cv_sizeof_unsigned_short" = "0" \
1362    || test "$ac_cv_sizeof_unsigned_int" = "0" \
1363    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
1364     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
1365 fi
1366
1367
1368 #
1369 # Checks for library functions.
1370 #
1371 AC_MSG_NOTICE([checking for library functions])
1372 AC_CHECK_DECLS(getpagesize)
1373 AC_FUNC_FSEEKO
1374 AC_FUNC_VPRINTF
1375 AC_FUNC_FORK
1376 AC_CHECK_FUNCS([strerror strlwr tcgetattr mmap canonicalize_file_name])
1377 AC_CHECK_FUNCS([strcasecmp strncasecmp ctermid times gmtime_r strtoull])
1378 AC_CHECK_FUNCS([setenv unsetenv fcntl ftruncate inet_ntop])
1379 AC_CHECK_FUNCS([canonicalize_file_name])
1380 AC_CHECK_FUNCS([gettimeofday getrusage getrlimit setrlimit clock_gettime])
1381 AC_CHECK_FUNCS([atexit raise getpagesize strftime nl_langinfo setlocale])
1382 AC_CHECK_FUNCS([waitpid wait4 sigaction sigprocmask pipe getaddrinfo])
1383 AC_CHECK_FUNCS([ttyname rand ftello fsync stat lstat])
1384 AC_CHECK_FUNCS([memicmp stpcpy strsep strlwr strtoul memmove stricmp strtol \
1385                 memrchr isascii timegm getrusage setrlimit stat setlocale   \
1386                 flockfile funlockfile getpwnam getpwuid \
1387                 getenv inet_pton strpbrk])
1388
1389 if test "$have_android_system" = yes; then
1390    # On Android ttyname is a stub but prints an error message.
1391    AC_DEFINE(HAVE_BROKEN_TTYNAME,1,
1392              [Defined if ttyname does not work properly])
1393 fi
1394
1395 AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
1396
1397 # Dirmngr requires mmap on Unix systems.
1398 if test $ac_cv_func_mmap != yes -a $mmap_needed = yes; then
1399   AC_MSG_ERROR([[Sorry, the current implemenation requires mmap.]])
1400 fi
1401
1402 #
1403 # W32 specific test
1404 #
1405 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
1406
1407 #
1408 # Sanity check regex.  Tests adapted from mutt.
1409 #
1410 AC_MSG_CHECKING([whether regular expression support is requested])
1411 AC_ARG_ENABLE(regex,
1412   AC_HELP_STRING([--disable-regex],
1413     [do not handle regular expressions in trust signatures]),
1414   use_regex=$enableval, use_regex=yes)
1415 AC_MSG_RESULT($use_regex)
1416
1417 if test "$use_regex" = yes ; then
1418   _cppflags="${CPPFLAGS}"
1419   _ldflags="${LDFLAGS}"
1420   AC_ARG_WITH(regex,
1421      AC_HELP_STRING([--with-regex=DIR],[look for regex in DIR]),
1422       [
1423       if test -d "$withval" ; then
1424         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1425         LDFLAGS="${LDFLAGS} -L$withval/lib"
1426       fi
1427       ],withval="")
1428
1429   # Does the system have regex functions at all?
1430   AC_SEARCH_LIBS([regcomp], [regex])
1431   AC_CHECK_FUNC(regcomp, gnupg_cv_have_regex=yes, gnupg_cv_have_regex=no)
1432
1433   if test $gnupg_cv_have_regex = no; then
1434     use_regex=no
1435   else
1436     if test x"$cross_compiling" = xyes; then
1437       AC_MSG_WARN([cross compiling; assuming regexp libray is not broken])
1438     else
1439       AC_CACHE_CHECK([whether your system's regexp library is broken],
1440        [gnupg_cv_regex_broken],
1441        AC_TRY_RUN([
1442 #include <unistd.h>
1443 #include <regex.h>
1444 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); }],
1445        gnupg_cv_regex_broken=no, gnupg_cv_regex_broken=yes, gnupg_cv_regex_broken=yes))
1446
1447       if test $gnupg_cv_regex_broken = yes; then
1448         AC_MSG_WARN([your regex is broken - disabling regex use])
1449         use_regex=no
1450       fi
1451     fi
1452   fi
1453   CPPFLAGS="${_cppflags}"
1454   LDFLAGS="${_ldflags}"
1455 fi
1456
1457 if test "$use_regex" != yes ; then
1458   AC_DEFINE(DISABLE_REGEX,1, [Define to disable regular expression support])
1459 fi
1460 AM_CONDITIONAL(DISABLE_REGEX, test x"$use_regex" != xyes)
1461
1462
1463
1464 #
1465 # Do we have zlib? Must do it here because Solaris failed
1466 # when compiling a conftest (due to the "-lz" from LIBS).
1467 # Note that we combine zlib and bzlib2 in ZLIBS.
1468 #
1469 if test "$use_zip" = yes ; then
1470   _cppflags="${CPPFLAGS}"
1471   _ldflags="${LDFLAGS}"
1472   AC_ARG_WITH(zlib,
1473     [  --with-zlib=DIR         use libz in DIR],[
1474       if test -d "$withval"; then
1475         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1476         LDFLAGS="${LDFLAGS} -L$withval/lib"
1477       fi
1478     ])
1479
1480   AC_CHECK_HEADER(zlib.h,
1481      AC_CHECK_LIB(z, deflateInit2_,
1482        [
1483        ZLIBS="-lz"
1484        AC_DEFINE(HAVE_ZIP,1, [Defined if ZIP and ZLIB are supported])
1485        ],
1486        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1487        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
1488 fi
1489
1490
1491 #
1492 # Check whether we can support bzip2
1493 #
1494 if test "$use_bzip2" = yes ; then
1495   _cppflags="${CPPFLAGS}"
1496   _ldflags="${LDFLAGS}"
1497   AC_ARG_WITH(bzip2,
1498      AC_HELP_STRING([--with-bzip2=DIR],[look for bzip2 in DIR]),
1499       [
1500       if test -d "$withval" ; then
1501         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1502         LDFLAGS="${LDFLAGS} -L$withval/lib"
1503       fi
1504       ],withval="")
1505
1506   # Checking alongside stdio.h as an early version of bzip2 (1.0)
1507   # required stdio.h to be included before bzlib.h, and Solaris 9 is
1508   # woefully out of date.
1509   if test "$withval" != no ; then
1510      AC_CHECK_HEADER(bzlib.h,
1511         AC_CHECK_LIB(bz2,BZ2_bzCompressInit,
1512           [
1513           have_bz2=yes
1514           ZLIBS="$ZLIBS -lbz2"
1515           AC_DEFINE(HAVE_BZIP2,1,
1516                   [Defined if the bz2 compression library is available])
1517           ],
1518           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1519           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags},[#include <stdio.h>])
1520   fi
1521 fi
1522 AM_CONDITIONAL(ENABLE_BZIP2_SUPPORT,test x"$have_bz2" = "xyes")
1523 AC_SUBST(ZLIBS)
1524
1525
1526 # Check for readline support
1527 GNUPG_CHECK_READLINE
1528
1529
1530 if test "$development_version" = yes; then
1531     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
1532             [Defined if this is not a regular release])
1533 fi
1534
1535 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
1536
1537 GNUPG_CHECK_GNUMAKE
1538
1539 # Add some extra libs here so that previous tests don't fail for
1540 # mysterious reasons - the final link step should bail out.
1541 # W32SOCKLIBS is also defined so that if can be used for tools not
1542 # requiring any network stuff but linking to code in libcommon which
1543 # tracks in winsock stuff (e.g. init_common_subsystems).
1544 if test "$have_w32_system" = yes; then
1545    if test "$have_w32ce_system" = yes; then
1546      W32SOCKLIBS="-lws2"
1547    else
1548      W32SOCKLIBS="-lws2_32"
1549    fi
1550    NETLIBS="${NETLIBS} ${W32SOCKLIBS}"
1551 fi
1552
1553 AC_SUBST(NETLIBS)
1554 AC_SUBST(W32SOCKLIBS)
1555
1556 #
1557 # Setup gcc specific options
1558 #
1559 AC_MSG_NOTICE([checking for cc features])
1560 if test "$GCC" = yes; then
1561     mycflags=
1562     mycflags_save=$CFLAGS
1563
1564     # Check whether gcc does not emit a diagnositc for unknow -Wno-*
1565     # options.  This is the case for gcc >= 4.6
1566     AC_MSG_CHECKING([if gcc ignores unknown -Wno-* options])
1567     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1568 #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6 )
1569 #kickerror
1570 #endif]],[])],[_gcc_silent_wno=yes],[_gcc_silent_wno=no])
1571     AC_MSG_RESULT($_gcc_silent_wno)
1572
1573     # Note that it is okay to use CFLAGS here because these are just
1574     # warning options and the user should have a chance of overriding
1575     # them.
1576     if test "$USE_MAINTAINER_MODE" = "yes"; then
1577         mycflags="$mycflags -O3 -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
1578         mycflags="$mycflags -Wformat -Wno-format-y2k -Wformat-security"
1579         if test x"$_gcc_silent_wno" = xyes ; then
1580           _gcc_wopt=yes
1581         else
1582           AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers])
1583           CFLAGS="-Wno-missing-field-initializers"
1584           AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
1585                             [_gcc_wopt=yes],[_gcc_wopt=no])
1586           AC_MSG_RESULT($_gcc_wopt)
1587         fi
1588         if test x"$_gcc_wopt" = xyes ; then
1589           mycflags="$mycflags -W -Wno-sign-compare"
1590           mycflags="$mycflags -Wno-missing-field-initializers"
1591         fi
1592
1593         AC_MSG_CHECKING([if gcc supports -Wdeclaration-after-statement])
1594         CFLAGS="-Wdeclaration-after-statement"
1595         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_wopt=yes,_gcc_wopt=no)
1596         AC_MSG_RESULT($_gcc_wopt)
1597         if test x"$_gcc_wopt" = xyes ; then
1598           mycflags="$mycflags -Wdeclaration-after-statement"
1599         fi
1600     else
1601         mycflags="$mycflags -Wall"
1602     fi
1603
1604     if test x"$_gcc_silent_wno" = xyes ; then
1605       _gcc_psign=yes
1606     else
1607       AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign])
1608       CFLAGS="-Wno-pointer-sign"
1609       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
1610                         [_gcc_psign=yes],[_gcc_psign=no])
1611       AC_MSG_RESULT($_gcc_psign)
1612     fi
1613     if test x"$_gcc_psign" = xyes ; then
1614        mycflags="$mycflags -Wno-pointer-sign"
1615     fi
1616
1617     AC_MSG_CHECKING([if gcc supports -Wpointer-arith])
1618     CFLAGS="-Wpointer-arith"
1619     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],_gcc_psign=yes,_gcc_psign=no)
1620     AC_MSG_RESULT($_gcc_psign)
1621     if test x"$_gcc_psign" = xyes ; then
1622        mycflags="$mycflags -Wpointer-arith"
1623     fi
1624
1625     CFLAGS="$mycflags $mycflags_save"
1626 fi
1627
1628
1629 #
1630 # This is handy for debugging so the compiler doesn't rearrange
1631 # things and eliminate variables.
1632 #
1633 AC_ARG_ENABLE(optimization,
1634    AC_HELP_STRING([--disable-optimization],
1635                   [disable compiler optimization]),
1636                   [if test $enableval = no ; then
1637                       CFLAGS=`echo $CFLAGS | sed s/-O[[1-9]]\ /-O0\ /g`
1638                    fi])
1639
1640 #
1641 # Add user CFLAGS.
1642 #
1643 CFLAGS="$CFLAGS $CFLAGS_orig"
1644
1645 #
1646 # Decide what to build
1647 #
1648
1649 build_scdaemon_extra=""
1650 if test "$build_scdaemon" = "yes"; then
1651   if test $have_libusb = no; then
1652      build_scdaemon_extra="without internal CCID driver"
1653   fi
1654   if test -n "$build_scdaemon_extra"; then
1655      build_scdaemon_extra="(${build_scdaemon_extra})"
1656   fi
1657 fi
1658
1659
1660 #
1661 # Set variables for use by automake makefiles.
1662 #
1663 AM_CONDITIONAL(BUILD_GPG,         test "$build_gpg" = "yes")
1664 AM_CONDITIONAL(BUILD_GPGSM,       test "$build_gpgsm" = "yes")
1665 AM_CONDITIONAL(BUILD_AGENT,       test "$build_agent" = "yes")
1666 AM_CONDITIONAL(BUILD_SCDAEMON,    test "$build_scdaemon" = "yes")
1667 AM_CONDITIONAL(BUILD_G13,         test "$build_g13" = "yes")
1668 AM_CONDITIONAL(BUILD_DIRMNGR,     test "$build_dirmngr" = "yes")
1669 AM_CONDITIONAL(BUILD_TOOLS,       test "$build_tools" = "yes")
1670 AM_CONDITIONAL(BUILD_DOC,         test "$build_doc" = "yes")
1671 AM_CONDITIONAL(BUILD_SYMCRYPTRUN, test "$build_symcryptrun" = "yes")
1672 AM_CONDITIONAL(BUILD_GPGTAR,      test "$build_gpgtar" = "yes")
1673
1674 AM_CONDITIONAL(ENABLE_CARD_SUPPORT, test "$card_support" = yes)
1675 AM_CONDITIONAL(NO_TRUST_MODELS,     test "$use_trust_models" = no)
1676 AM_CONDITIONAL(USE_TOFU,            test "$use_tofu" = yes)
1677
1678 AM_CONDITIONAL(RUN_GPG_TESTS,
1679                test x$cross_compiling = xno -a "$build_gpg" = yes )
1680
1681 #
1682 # Set some defines for use gpgconf.
1683 #
1684 if test "$build_gpg" = yes ; then
1685     AC_DEFINE(BUILD_WITH_GPG,1,[Defined if GPG is to be build])
1686 fi
1687 if test "$build_gpgsm" = yes ; then
1688     AC_DEFINE(BUILD_WITH_GPGSM,1,[Defined if GPGSM is to be build])
1689 fi
1690 if test "$build_agent" = yes ; then
1691     AC_DEFINE(BUILD_WITH_AGENT,1,[Defined if GPG-AGENT is to be build])
1692 fi
1693 if test "$build_scdaemon" = yes ; then
1694     AC_DEFINE(BUILD_WITH_SCDAEMON,1,[Defined if SCDAEMON is to be build])
1695 fi
1696 if test "$build_dirmngr" = yes ; then
1697     AC_DEFINE(BUILD_WITH_DIRMNGR,1,[Defined if SCDAEMON is to be build])
1698 fi
1699 if test "$build_g13" = yes ; then
1700     AC_DEFINE(BUILD_WITH_G13,1,[Defined if G13 is to be build])
1701 fi
1702
1703
1704 #
1705 # Define Name strings
1706 #
1707 AC_DEFINE_UNQUOTED(GNUPG_NAME, "GnuPG", [The name of the project])
1708
1709 AC_DEFINE_UNQUOTED(GPG_NAME, "gpg", [The name of the OpenPGP tool])
1710 AC_DEFINE_UNQUOTED(GPG_DISP_NAME, "GnuPG", [The displayed name of gpg])
1711
1712 AC_DEFINE_UNQUOTED(GPGSM_NAME, "gpgsm", [The name of the S/MIME tool])
1713 AC_DEFINE_UNQUOTED(GPGSM_DISP_NAME, "GPGSM", [The displayed name of gpgsm])
1714
1715 AC_DEFINE_UNQUOTED(GPG_AGENT_NAME, "gpg-agent", [The name of the agent])
1716 AC_DEFINE_UNQUOTED(GPG_AGENT_DISP_NAME, "GPG Agent",
1717                                         [The displayed name of gpg-agent])
1718
1719 AC_DEFINE_UNQUOTED(SCDAEMON_NAME, "scdaemon", [The name of the scdaemon])
1720 AC_DEFINE_UNQUOTED(SCDAEMON_DISP_NAME, "SCDaemon",
1721                                        [The displayed name of scdaemon])
1722
1723 AC_DEFINE_UNQUOTED(DIRMNGR_NAME, "dirmngr", [The name of the dirmngr])
1724 AC_DEFINE_UNQUOTED(DIRMNGR_DISP_NAME, "DirMngr",
1725                                       [The displayed name of dirmngr])
1726
1727 AC_DEFINE_UNQUOTED(G13_NAME, "g13", [The name of the g13 tool])
1728 AC_DEFINE_UNQUOTED(G13_DISP_NAME, "G13", [The displayed name of g13])
1729
1730 AC_DEFINE_UNQUOTED(GPGCONF_NAME, "gpgconf", [The name of the gpgconf tool])
1731 AC_DEFINE_UNQUOTED(GPGCONF_DISP_NAME, "GPGConf",
1732                                       [The displayed name of gpgconf])
1733
1734 AC_DEFINE_UNQUOTED(GPGTAR_NAME, "gpgtar", [The name of the gpgtar tool])
1735
1736 AC_DEFINE_UNQUOTED(GPG_AGENT_SOCK_NAME, "S.gpg-agent",
1737                    [The name of the agent socket])
1738 AC_DEFINE_UNQUOTED(GPG_AGENT_SSH_SOCK_NAME, "S.gpg-agent.ssh",
1739                    [The name of the agent socket for ssh])
1740 AC_DEFINE_UNQUOTED(DIRMNGR_INFO_NAME, "DIRMNGR_INFO",
1741                    [The name of the dirmngr info envvar])
1742 AC_DEFINE_UNQUOTED(SCDAEMON_SOCK_NAME, "S.scdaemon",
1743                    [The name of the SCdaemon socket])
1744 AC_DEFINE_UNQUOTED(DIRMNGR_SOCK_NAME, "S.dirmngr",
1745                    [The name of the dirmngr socket])
1746
1747 AC_DEFINE_UNQUOTED(GPGEXT_GPG, "gpg", [The standard binary file suffix])
1748
1749 if test "$have_w32_system" = yes; then
1750   AC_DEFINE_UNQUOTED(GNUPG_REGISTRY_DIR, "\\\\Software\\\\GNU\\\\GnuPG",
1751                      [The directory part of the W32 registry keys])
1752 fi
1753
1754
1755 #
1756 # Provide information about the build.
1757 #
1758 BUILD_REVISION="mym4_revision"
1759 AC_SUBST(BUILD_REVISION)
1760 AC_DEFINE_UNQUOTED(BUILD_REVISION, "$BUILD_REVISION",
1761                    [GIT commit id revision used to build this package])
1762
1763 changequote(,)dnl
1764 BUILD_VERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./'`
1765 changequote([,])dnl
1766 BUILD_VERSION="${BUILD_VERSION}mym4_revision_dec"
1767 BUILD_FILEVERSION=`echo "${BUILD_VERSION}" | tr . ,`
1768 AC_SUBST(BUILD_VERSION)
1769 AC_SUBST(BUILD_FILEVERSION)
1770
1771 AC_ARG_ENABLE([build-timestamp],
1772   AC_HELP_STRING([--enable-build-timestamp],
1773                  [set an explicit build timestamp for reproducibility.
1774                   (default is the current time in ISO-8601 format)]),
1775      [if test "$enableval" = "yes"; then
1776         BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date`
1777       else
1778         BUILD_TIMESTAMP="$enableval"
1779       fi
1780       BUILD_HOSTNAME="$ac_hostname"],
1781      [BUILD_TIMESTAMP="<none>"
1782       BUILD_HOSTNAME="<anon>"])
1783 AC_SUBST(BUILD_TIMESTAMP)
1784 AC_DEFINE_UNQUOTED(BUILD_TIMESTAMP, "$BUILD_TIMESTAMP",
1785                    [The time this package was configured for a build])
1786 AC_SUBST(BUILD_HOSTNAME)
1787
1788
1789 #
1790 # Print errors here so that they are visible all
1791 # together and the user can acquire them all together.
1792 #
1793 die=no
1794 if test "$have_gpg_error" = "no"; then
1795    die=yes
1796    AC_MSG_NOTICE([[
1797 ***
1798 *** You need libgpg-error to build this program.
1799 **  This library is for example available at
1800 ***   ftp://ftp.gnupg.org/gcrypt/libgpg-error
1801 *** (at least version $NEED_GPG_ERROR_VERSION is required.)
1802 ***]])
1803 fi
1804 if test "$have_libgcrypt" = "no"; then
1805    die=yes
1806    AC_MSG_NOTICE([[
1807 ***
1808 *** You need libgcrypt to build this program.
1809 **  This library is for example available at
1810 ***   ftp://ftp.gnupg.org/gcrypt/libgcrypt/
1811 *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API) is required.)
1812 ***]])
1813 fi
1814 if test "$have_libassuan" = "no"; then
1815    die=yes
1816    AC_MSG_NOTICE([[
1817 ***
1818 *** You need libassuan to build this program.
1819 *** This library is for example available at
1820 ***   ftp://ftp.gnupg.org/gcrypt/libassuan/
1821 *** (at least version $NEED_LIBASSUAN_VERSION (API $NEED_LIBASSUAN_API) is required).
1822 ***]])
1823 fi
1824 if test "$have_ksba" = "no"; then
1825     die=yes
1826     AC_MSG_NOTICE([[
1827 ***
1828 *** You need libksba to build this program.
1829 *** This library is for example available at
1830 ***   ftp://ftp.gnupg.org/gcrypt/libksba/
1831 *** (at least version $NEED_KSBA_VERSION using API $NEED_KSBA_API is required).
1832 ***]])
1833 fi
1834 if test "$gnupg_have_ldap" = yes; then
1835   if test "$have_w32ce_system" = yes; then
1836     AC_MSG_NOTICE([[
1837 *** Note that CeGCC might be broken, a package fixing this is:
1838 ***    http://files.kolab.org/local/windows-ce/
1839 ***                           source/wldap32_0.1-mingw32ce.orig.tar.gz
1840 ***                           binary/wldap32-ce-arm-dev_0.1-1_all.deb
1841 ***]])
1842    fi
1843 fi
1844 if test "$have_npth" = "no"; then
1845     die=yes
1846     AC_MSG_NOTICE([[
1847 ***
1848 *** It is now required to build with support for the
1849 *** New Portable Threads Library (nPth). Please install this
1850 *** library first.  The library is for example available at
1851 ***   ftp://ftp.gnupg.org/gcrypt/npth/
1852 *** (at least version $NEED_NPTH_VERSION (API $NEED_NPTH_API) is required).
1853 ***]])
1854 fi
1855
1856 if test "$require_iconv" = yes; then
1857   if test "$am_func_iconv" != yes; then
1858     die=yes
1859     AC_MSG_NOTICE([[
1860 ***
1861 *** The system does not provide a working iconv function.  Please
1862 *** install a suitable library; for example GNU Libiconv which is
1863 *** available at:
1864 ***   http://ftp.gnu.org/gnu/libiconv/
1865 ***]])
1866   fi
1867 fi
1868
1869 if test "$use_ccid_driver" = yes; then
1870   if test "$have_libusb" != yes; then
1871     die=yes
1872     AC_MSG_NOTICE([[
1873 ***
1874 *** You need libusb to build the internal ccid driver.  Please
1875 *** install a libusb suitable for your system.
1876 ***]])
1877   fi
1878 fi
1879
1880 if test "$die" = "yes"; then
1881     AC_MSG_ERROR([[
1882 ***
1883 *** Required libraries not found. Please consult the above messages
1884 *** and install them before running configure again.
1885 ***]])
1886 fi
1887
1888
1889
1890 AC_CONFIG_FILES([ m4/Makefile
1891 Makefile
1892 po/Makefile.in
1893 common/Makefile
1894 common/w32info-rc.h
1895 kbx/Makefile
1896 g10/Makefile
1897 sm/Makefile
1898 agent/Makefile
1899 scd/Makefile
1900 g13/Makefile
1901 dirmngr/Makefile
1902 tools/gpg-zip
1903 tools/Makefile
1904 doc/Makefile
1905 tests/Makefile
1906 tests/gpgscm/Makefile
1907 tests/openpgp/Makefile
1908 tests/pkits/Makefile
1909 g10/gpg.w32-manifest
1910 ])
1911
1912
1913 AC_OUTPUT
1914
1915
1916 echo "
1917         GnuPG v${VERSION} has been configured as follows:
1918
1919         Revision:  mym4_revision  (mym4_revision_dec)
1920         Platform:  $PRINTABLE_OS_NAME ($host)
1921
1922         OpenPGP:   $build_gpg
1923         S/MIME:    $build_gpgsm
1924         Agent:     $build_agent
1925         Smartcard: $build_scdaemon $build_scdaemon_extra
1926         G13:       $build_g13
1927         Dirmngr:   $build_dirmngr
1928         Gpgtar:    $build_gpgtar
1929
1930         Protect tool:      $show_gnupg_protect_tool_pgm
1931         LDAP wrapper:      $show_gnupg_dirmngr_ldap_pgm
1932         Default agent:     $show_gnupg_agent_pgm
1933         Default pinentry:  $show_gnupg_pinentry_pgm
1934         Default scdaemon:  $show_gnupg_scdaemon_pgm
1935         Default dirmngr:   $show_gnupg_dirmngr_pgm
1936
1937         Dirmngr auto start:  $dirmngr_auto_start
1938         Readline support:    $gnupg_cv_have_readline
1939         LDAP support:        $gnupg_have_ldap
1940         DNS SRV support:     $use_dns_srv
1941         TLS support:         $use_tls_library
1942         TOFU support:        $use_tofu
1943         Tor support:         $show_tor_support
1944 "
1945 if test x"$use_regex" != xyes ; then
1946 echo "
1947         Warning: No regular expression support available.
1948                  OpenPGP trust signatures won't work.
1949                  gpg-check-pattern will not be built.
1950 "
1951 fi
1952 if test "x${gpg_config_script_warn}" != x; then
1953 cat <<G10EOF
1954         Warning: Mismatches between the target platform and the
1955                  to be used libraries have been detected for:
1956                   ${gpg_config_script_warn}
1957                  Please check above for more warning messages.
1958
1959 G10EOF
1960 fi