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