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