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