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