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