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