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