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