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