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