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