48be044d0289f9894b82d161f013fd57e11047ea
[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_ASPRINTF_MALLOC      gcry_malloc
432 #define ESTREAM_ASPRINTF_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_PROG_MAKE_SET
443 AM_SANITY_CHECK
444 missing_dir=`cd $ac_aux_dir && pwd`
445 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
446 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
447 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
448 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
449 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
450 AC_PROG_AWK
451 AC_PROG_CC
452 AC_PROG_CPP
453 AM_PROG_CC_C_O
454 if test "x$ac_cv_prog_cc_c89" = "xno" ; then
455   AC_MSG_ERROR([[No C-89 compiler found]])
456 fi
457 AC_PROG_INSTALL
458 AC_PROG_LN_S
459 AC_PROG_RANLIB
460 AC_CHECK_TOOL(AR, ar, :)
461 AC_PATH_PROG(PERL,"perl")
462 AC_ISC_POSIX
463 gl_EARLY
464 AC_SYS_LARGEFILE
465 GNUPG_CHECK_FAQPROG
466 GNUPG_CHECK_USTAR
467
468
469 try_gettext=yes
470 have_dosish_system=no
471 have_w32_system=no
472 use_simple_gettext=no
473 case "${host}" in
474     *-mingw32*)
475         # special stuff for Windoze NT
476         ac_cv_have_dev_random=no
477         AC_DEFINE(USE_ONLY_8DOT3,1,
478                   [set this to limit filenames to the 8.3 format])
479         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
480                   [defined if we must run on a stupid file system])
481         AC_DEFINE(USE_SIMPLE_GETTEXT,1,
482                   [because the Unix gettext has too much overhead on
483                    MingW32 systems and these systems lack Posix functions,
484                    we use a simplified version of gettext])
485         disable_keyserver_path=yes
486         have_dosish_system=yes
487         have_w32_system=yes
488         try_gettext="no"
489         use_simple_gettext=yes
490         ;;
491     i?86-emx-os2 | i?86-*-os2*emx )
492         # OS/2 with the EMX environment
493         ac_cv_have_dev_random=no
494         AC_DEFINE(HAVE_DRIVE_LETTERS)
495         have_dosish_system=yes
496         try_gettext="no"
497         ;;
498
499     i?86-*-msdosdjgpp*)
500         # DOS with the DJGPP environment
501         ac_cv_have_dev_random=no
502         AC_DEFINE(HAVE_DRIVE_LETTERS)
503         have_dosish_system=yes
504         try_gettext="no"
505         ;;
506
507     *-*-freebsd*)
508        # FreeBSD
509        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
510        LDFLAGS="$LDFLAGS -L/usr/local/lib"
511        ;;
512
513     *-*-hpux*)
514         if test -z "$GCC" ; then
515             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
516         fi
517         ;;
518     *-dec-osf4*)
519         if test -z "$GCC" ; then
520             # Suppress all warnings
521             # to get rid of the unsigned/signed char mismatch warnings.
522             CFLAGS="$CFLAGS -w"
523         fi
524         ;;
525     *-dec-osf5*)
526         if test -z "$GCC" ; then
527             # Use the newer compiler `-msg_disable ptrmismatch1' to
528             # get rid of the unsigned/signed char mismatch warnings.
529             # Using this may hide other pointer mismatch warnings, but
530             # it at least lets other warning classes through
531             CFLAGS="$CFLAGS -msg_disable ptrmismatch1"
532         fi
533         ;;
534     m68k-atari-mint)
535         ;;
536     *)
537        ;;
538 esac
539
540 if test "$have_dosish_system" = yes; then
541    AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
542              [Defined if we run on some of the PCDOS like systems 
543               (DOS, Windoze. OS/2) with special properties like
544               no file modes])
545 fi
546 AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
547
548 AM_CONDITIONAL(USE_SIMPLE_GETTEXT, test x"$use_simple_gettext" = xyes)
549
550 if test "$have_w32_system" = yes; then
551    AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
552 fi
553 AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
554
555 if test "$disable_keyserver_path" = yes; then
556     AC_DEFINE(DISABLE_KEYSERVER_PATH,1,
557               [Defined to disable exec-path for keyserver helpers])
558 fi
559
560 # (These need to go after AC_PROG_CC so that $EXEEXT is defined)
561 AC_DEFINE_UNQUOTED(EXEEXT,"$EXEEXT",[The executable file extension, if any])
562
563 if test x"$try_hkp" = xyes ; then
564   AC_SUBST(GPGKEYS_HKP,"gpg2keys_hkp$EXEEXT")
565 fi
566
567 if test x"$try_finger" = xyes ; then
568   AC_SUBST(GPGKEYS_FINGER,"gpg2keys_finger$EXEEXT")
569 fi
570
571
572
573 #
574 # Checks for libraries.
575 #
576
577
578 #
579 # libgpg-error is a library with error codes shared between GnuPG
580 # related projects.
581 #
582 AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION",
583                   have_gpg_error=yes,have_gpg_error=no)
584
585
586 #
587 # Libgcrypt is our generic crypto library
588 #
589 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION",
590         have_libgcrypt=yes,have_libgcrypt=no)
591
592
593 #
594 # libassuan is used for IPC
595 #
596 AM_PATH_LIBASSUAN("$NEED_LIBASSUAN_API:$NEED_LIBASSUAN_VERSION",
597                   have_libassuan=yes,have_libassuan=no)
598 if test "$have_libassuan" = "yes"; then
599   have_libassuan=no
600   AM_PATH_LIBASSUAN_PTH("$NEED_LIBASSUAN_API:$NEED_LIBASSUAN_VERSION",
601                         have_libassuan=yes,have_libassuan=no)
602   AM_CHECK_LIBASSUAN("$NEED_LIBASSUAN_API:1.0.1",
603        [AC_DEFINE(HAVE_ASSUAN_SET_IO_MONITOR, 1,
604          [Define to 1 if you have the `assuan_set_io_monitor' function.])],)  
605 fi
606
607
608
609 #
610 # libksba is our X.509 support library
611 #
612 AM_PATH_KSBA("$NEED_KSBA_API:$NEED_KSBA_VERSION",have_ksba=yes,have_ksba=no)
613
614
615 #
616 # libusb allows us to use the integrated CCID smartcard reader driver.
617 #
618 # FiXME: Use GNUPG_CHECK_LIBUSB and modify to use separate AC_SUBSTs.
619 AC_CHECK_LIB(usb, usb_bulk_write,
620               [ LIBUSB_LIBS="$LIBUSB_LIBS -lusb"
621                 AC_DEFINE(HAVE_LIBUSB,1,
622                          [defined if libusb is available])
623                 have_libusb=yes
624              ])
625 AC_SUBST(LIBUSB_LIBS)
626 AC_CHECK_FUNCS(usb_create_match)
627
628 #
629 # Check wether it is necessary to link against libdl.
630 #
631 gnupg_dlopen_save_libs="$LIBS"
632 LIBS=""
633 AC_SEARCH_LIBS(dlopen, c dl,,,)
634 DL_LIBS=$LIBS
635 AC_SUBST(DL_LIBS)
636 LIBS="$gnupg_dlopen_save_libs"
637
638 #
639 # Checks for symcryptrun:
640 #
641
642 # libutil has openpty() and login_tty().
643 AC_CHECK_LIB(util, openpty,
644               [ LIBUTIL_LIBS="$LIBUTIL_LIBS -lutil"
645                 AC_DEFINE(HAVE_LIBUTIL,1,
646                          [defined if libutil is available])
647              ])
648 AC_SUBST(LIBUTIL_LIBS)
649
650 # shred is used to clean temporary plain text files.
651 AC_PATH_PROG(SHRED, shred, /usr/bin/shred)
652 AC_DEFINE_UNQUOTED(SHRED,
653         "${SHRED}", [defines the filename of the shred program])
654
655
656
657 #
658 # Check whether the GNU Pth library is available
659 # Note, that we include a Pth emulation for W32.
660 #
661 GNUPG_PATH_PTH
662 if test "$have_pth" = "yes"; then
663   AC_DEFINE(USE_GNU_PTH, 1,
664               [Defined if the GNU Portable Thread Library should be used])
665 else
666   AC_MSG_WARN([[
667 ***
668 *** To support concurrent access to the gpg-agent and the SCdaemon
669 *** we need the support of the GNU Portable Threads Library.
670 *** Download it from ftp://ftp.gnu.org/gnu/pth/
671 *** On a Debian GNU/Linux system you might want to try 
672 ***   apt-get install libpth-dev
673 ***]])
674 fi
675
676
677
678 #
679 # Must check for network library requirements before doing link tests
680 # for ldap, for example. If ldap libs are static (or dynamic and without
681 # ELF runtime link paths), then link will fail and LDAP support won't
682 # be detected.
683 #
684 AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname,
685         [NETLIBS="-lnsl $NETLIBS"]))
686 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
687         [NETLIBS="-lsocket $NETLIBS"]))
688
689 #
690 # Now try for the resolver functions so we can use DNS for SRV, PA and CERT.
691 #
692 if test x"$try_hkp" = xyes || test x"$try_http" = xyes ; then
693   AC_ARG_ENABLE(dns-srv,
694      AC_HELP_STRING([--disable-dns-srv],
695                     [disable the use of DNS SRV in HKP and HTTP]),
696                 use_dns_srv=$enableval,use_dns_srv=yes)
697 fi
698
699 AC_ARG_ENABLE(dns-pka,
700    AC_HELP_STRING([--disable-dns-pka],
701         [disable the use of PKA records in DNS]),
702    use_dns_pka=$enableval,use_dns_pka=yes)
703
704 AC_ARG_ENABLE(dns-cert,
705    AC_HELP_STRING([--disable-dns-cert],
706         [disable the use of CERT records in DNS]),
707    use_dns_cert=$enableval,use_dns_cert=yes)
708
709 if test x"$use_dns_pka" = xyes || test x"$use_dns_srv" = xyes \
710    || test x"$use_dns_cert" = xyes; then
711   _dns_save_libs=$LIBS
712   LIBS=""
713   # the double underscore thing is a glibc-ism?
714   AC_SEARCH_LIBS(res_query,resolv bind,,
715                  AC_SEARCH_LIBS(__res_query,resolv bind,,have_resolver=no))
716   AC_SEARCH_LIBS(dn_expand,resolv bind,,
717                  AC_SEARCH_LIBS(__dn_expand,resolv bind,,have_resolver=no))
718   AC_SEARCH_LIBS(dn_skipname,resolv bind,,
719                  AC_SEARCH_LIBS(__dn_skipname,resolv bind,,have_resolver=no))
720
721   if test x"$have_resolver" != xno ; then
722
723     # Make sure that the BIND 4 resolver interface is workable before
724     # enabling any code that calls it.  At some point I'll rewrite the
725     # code to use the BIND 8 resolver API.
726
727     AC_MSG_CHECKING([whether the resolver is usable])
728     AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
729 #include <netinet/in.h>
730 #include <arpa/nameser.h>
731 #include <resolv.h>],
732 [[unsigned char answer[PACKETSZ];
733   res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);
734   dn_skipname(0,0); 
735   dn_expand(0,0,0,0,0);
736 ]])],have_resolver=yes,have_resolver=no)
737     AC_MSG_RESULT($have_resolver)
738
739     # This is Apple-specific and somewhat bizarre as they changed the
740     # define in bind 8 for some reason.
741
742     if test x"$have_resolver" != xyes ; then
743        AC_MSG_CHECKING(
744              [whether I can make the resolver usable with BIND_8_COMPAT])
745        AC_LINK_IFELSE([AC_LANG_PROGRAM([#define BIND_8_COMPAT
746 #include <sys/types.h>
747 #include <netinet/in.h>
748 #include <arpa/nameser.h>
749 #include <resolv.h>],
750 [[unsigned char answer[PACKETSZ];
751   res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);
752   dn_skipname(0,0); dn_expand(0,0,0,0,0);
753 ]])],[have_resolver=yes ; need_compat=yes])
754        AC_MSG_RESULT($have_resolver)
755     fi
756   fi
757
758   if test x"$have_resolver" = xyes ; then
759      DNSLIBS=$LIBS
760
761      if test x"$use_dns_srv" = xyes ; then
762         AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
763      fi
764
765      if test x"$use_dns_pka" = xyes ; then
766         AC_DEFINE(USE_DNS_PKA,1,[define to use our experimental DNS PKA])
767      fi
768
769      if test x"$use_dns_cert" = xyes ; then
770         AC_DEFINE(USE_DNS_CERT,1,[define to use DNS CERT])
771      fi
772
773      if test x"$need_compat" = xyes ; then
774         AC_DEFINE(BIND_8_COMPAT,1,[an Apple OSXism])
775      fi
776   else
777      use_dns_srv=no
778      use_dns_pka=no
779      use_dns_cert=no
780   fi
781
782   LIBS=$_dns_save_libs
783 fi
784
785 AC_SUBST(DNSLIBS)
786
787 AM_CONDITIONAL(USE_DNS_SRV, test x"$use_dns_srv" = xyes)
788
789 #
790 # Check for LDAP
791 #
792 if test "$try_ldap" = yes ; then
793    GNUPG_CHECK_LDAP($NETLIBS)
794 fi
795
796 #
797 # Check for curl.  We fake the curl API if libcurl isn't installed.
798 #
799 LIBCURL_CHECK_CONFIG([yes],,,[fake_curl=yes])
800 AM_CONDITIONAL(FAKE_CURL,test x"$fake_curl" = xyes)
801
802 # Generic, for us, means curl
803
804 if test x"$try_generic" = xyes ; then
805    AC_SUBST(GPGKEYS_CURL,"gpg2keys_curl$EXEEXT")
806 fi
807
808 #
809 # Check for sendmail
810 #
811 # This isn't necessarily sendmail itself, but anything that gives a
812 # sendmail-ish interface to the outside world.  That includes Exim,
813 # Postfix, etc.  Basically, anything that can handle "sendmail -t".
814 if test "$try_mailto" = yes ; then
815   AC_ARG_WITH(mailprog,
816       AC_HELP_STRING([--with-mailprog=NAME],
817                      [use "NAME -t" for mail transport]),
818              ,with_mailprog=yes)
819
820   if test x"$with_mailprog" = xyes ; then
821     AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
822     if test "$ac_cv_path_SENDMAIL" ; then
823       GPGKEYS_MAILTO="gpg2keys_mailto"
824     fi
825   elif test x"$with_mailprog" != xno ; then
826     AC_MSG_CHECKING([for a mail transport program])
827     AC_SUBST(SENDMAIL,$with_mailprog)
828     AC_MSG_RESULT($with_mailprog)
829     GPGKEYS_MAILTO="gpg2keys_mailto"
830   fi
831 fi
832
833 AC_SUBST(GPGKEYS_MAILTO)
834
835 #
836 # Construct a printable name of the OS
837 #
838 case "${host}" in
839     *-mingw32*)
840         PRINTABLE_OS_NAME="MingW32"
841         ;;
842     *-*-cygwin*)
843         PRINTABLE_OS_NAME="Cygwin"
844         ;;
845     i?86-emx-os2 | i?86-*-os2*emx )
846         PRINTABLE_OS_NAME="OS/2"
847         ;;
848     i?86-*-msdosdjgpp*)
849         PRINTABLE_OS_NAME="MSDOS/DJGPP"
850         try_dynload=no
851         ;;
852     *-linux*)
853         PRINTABLE_OS_NAME="GNU/Linux"
854         ;;
855     *)
856         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
857         ;;
858 esac
859 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
860                    [A human readable text with the name of the OS])
861
862
863 #
864 # Check for gettext
865 #
866 AM_GNU_GETTEXT_VERSION([0.16.1])
867 if test "$try_gettext" = yes; then
868   AM_GNU_GETTEXT(,[need-ngettext])
869
870   # gettext requires some extra checks.  These really should be part of
871   # the basic AM_GNU_GETTEXT macro.  TODO: move other gettext-specific
872   # function checks to here.
873
874   AC_CHECK_FUNCS(strchr)
875 else
876   USE_NLS=no
877   USE_INCLUDED_LIBINTL=no
878   BUILD_INCLUDED_LIBINTL=no
879   AC_SUBST(USE_NLS)
880   AC_SUBST(USE_INCLUDED_LIBINTL)
881   AC_SUBST(BUILD_INCLUDED_LIBINTL)
882 fi
883
884
885 #
886 # SELinux support
887 #
888 if test "$selinux_support" = yes ; then
889   AC_DEFINE(ENABLE_SELINUX_HACKS,1,[Define to enable SELinux support])
890 fi
891
892
893 #
894 # Checks for header files.
895 #
896 AC_HEADER_STDC
897 AC_CHECK_HEADERS([string.h unistd.h langinfo.h termio.h locale.h getopt.h])
898 AC_CHECK_HEADERS([pty.h pwd.h inttypes.h])
899 AC_HEADER_TIME
900
901
902 #
903 # Checks for typedefs, structures, and compiler characteristics.
904 #
905 AC_C_CONST
906 AC_C_INLINE
907 AC_C_VOLATILE
908 AC_TYPE_SIZE_T
909 AC_TYPE_MODE_T
910 AC_TYPE_SIGNAL
911 AC_DECL_SYS_SIGLIST
912
913 AC_ARG_ENABLE(endian-check,
914               AC_HELP_STRING([--disable-endian-check],
915               [disable the endian check and trust the OS provided macros]),
916               endiancheck=$enableval,endiancheck=yes)
917
918 if test x"$endiancheck" = xyes ; then
919   GNUPG_CHECK_ENDIAN
920 fi
921
922 # fixme: we should get rid of the byte type
923 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
924 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
925 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
926 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
927 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
928
929 AC_CHECK_SIZEOF(unsigned short)
930 AC_CHECK_SIZEOF(unsigned int)
931 AC_CHECK_SIZEOF(unsigned long)
932 AC_CHECK_SIZEOF(unsigned long long)
933 AC_CHECK_SIZEOF(time_t,,[[
934 #include <stdio.h>
935 #if TIME_WITH_SYS_TIME
936 # include <sys/time.h>
937 # include <time.h>
938 #else
939 # if HAVE_SYS_TIME_H
940 #  include <sys/time.h>
941 # else
942 #  include <time.h>
943 # endif
944 #endif
945 ]])
946
947
948 # Ensure that we have UINT64_C before we bother to check for uint64_t
949 # Fixme: really needed in gnupg?  I think it is only useful in libcgrypt.
950 AC_CACHE_CHECK([for UINT64_C],[gnupg_cv_uint64_c_works],
951    AC_COMPILE_IFELSE(AC_LANG_PROGRAM([#include <inttypes.h>
952        uint64_t foo=UINT64_C(42);]),
953      gnupg_cv_uint64_c_works=yes,gnupg_cv_uint64_c_works=no))
954 if test "$gnupg_cv_uint64_c_works" = "yes" ; then
955    AC_CHECK_SIZEOF(uint64_t)
956 fi
957
958 if test "$ac_cv_sizeof_unsigned_short" = "0" \
959    || test "$ac_cv_sizeof_unsigned_int" = "0" \
960    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
961     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
962 fi
963
964
965 #
966 # Checks for library functions.
967 #
968 AC_CHECK_DECLS(getpagesize)
969 AC_FUNC_FSEEKO
970 AC_FUNC_VPRINTF
971 AC_FUNC_FORK
972 AC_CHECK_FUNCS([strerror strlwr tcgetattr mmap])
973 AC_CHECK_FUNCS([strcasecmp strncasecmp ctermid times gmtime_r])
974 AC_CHECK_FUNCS([unsetenv getpwnam getpwuid fcntl ftruncate])
975 AC_CHECK_FUNCS([gettimeofday getrusage setrlimit clock_gettime])
976 AC_CHECK_FUNCS([atexit raise getpagesize strftime nl_langinfo setlocale])
977 AC_CHECK_FUNCS([waitpid wait4 sigaction sigprocmask pipe stat getaddrinfo])
978 AC_CHECK_FUNCS([ttyname rand ftello])
979
980 AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
981
982 #
983 # These are needed by libjnlib - fixme: we should use a jnlib.m4
984 #
985 AC_CHECK_FUNCS([memicmp stpcpy strsep strlwr strtoul memmove stricmp strtol])
986 AC_CHECK_FUNCS([memrchr isascii timegm getrusage setrlimit stat setlocale])
987 AC_CHECK_FUNCS([flockfile funlockfile fopencookie funopen])
988
989 #
990 # gnulib checks
991 #
992 gl_SOURCE_BASE([gl])
993 gl_M4_BASE([gl/m4])
994 gl_MODULES([setenv mkdtemp xsize])
995 gl_INIT
996
997
998
999 #
1000 # W32 specific test
1001 #
1002 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
1003
1004
1005 #
1006 # Sanity check regex.  Tests adapted from mutt.
1007 # FIXME: We should use the the regex from gnulib
1008 #
1009 AC_MSG_CHECKING([whether regular expression support is requested])
1010 AC_ARG_ENABLE(regex,
1011   AC_HELP_STRING([--disable-regex],
1012     [do not handle regular expressions in trust signatures]),
1013   use_regex=$enableval, use_regex=yes)
1014 AC_MSG_RESULT($use_regex)
1015
1016 if test "$use_regex" = yes ; then
1017   AC_MSG_CHECKING([whether the included regex lib is requested])
1018   AC_ARG_WITH(included-regex,
1019       [  --with-included-regex   use the included GNU regex library],
1020       [gnupg_cv_included_regex="$withval"],[gnupg_cv_included_regex=no])
1021   AC_MSG_RESULT($gnupg_cv_included_regex)
1022
1023   if test $gnupg_cv_included_regex = no ; then
1024      # Does the system have regex functions at all?
1025      AC_CHECK_FUNC(regcomp,gnupg_cv_included_regex=no,
1026                            gnupg_cv_included_regex=yes)
1027   fi
1028
1029   if test $gnupg_cv_included_regex = no ; then
1030      AC_CACHE_CHECK([whether your system's regexp library is broken],
1031        [gnupg_cv_regex_broken],
1032        AC_TRY_RUN([
1033 #include <unistd.h>
1034 #include <regex.h>
1035 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); }],
1036        gnupg_cv_regex_broken=no, gnupg_cv_regex_broken=yes, gnupg_cv_regex_broken=yes))
1037
1038      if test $gnupg_cv_regex_broken = yes ; then
1039       AC_MSG_WARN(your regex is broken - using the included GNU regex instead.)
1040       gnupg_cv_included_regex=yes
1041      fi
1042   fi
1043
1044   if test $gnupg_cv_included_regex = yes; then
1045      AC_DEFINE(USE_INTERNAL_REGEX,1,[ Define if you want to use the included regex lib ])
1046   fi
1047 else
1048   AC_DEFINE(DISABLE_REGEX,1,[ Define to disable regular expression support ])
1049 fi
1050
1051 AM_CONDITIONAL(USE_INTERNAL_REGEX, test x"$gnupg_cv_included_regex" = xyes)
1052
1053
1054
1055 #
1056 # Do we have zlib? Must do it here because Solaris failed
1057 # when compiling a conftest (due to the "-lz" from LIBS).
1058 # Note that we combine zlib and bzlib2 in ZLIBS.
1059 #
1060 _cppflags="${CPPFLAGS}"
1061 _ldflags="${LDFLAGS}"
1062 AC_ARG_WITH(zlib,
1063   [  --with-zlib=DIR         use libz in DIR],[
1064     if test -d "$withval"; then
1065       CPPFLAGS="${CPPFLAGS} -I$withval/include"
1066       LDFLAGS="${LDFLAGS} -L$withval/lib"
1067     fi
1068   ])
1069
1070 AC_CHECK_HEADER(zlib.h,
1071       AC_CHECK_LIB(z, deflateInit2_,
1072        ZLIBS="-lz",
1073        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1074        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
1075
1076 #
1077 # Check whether we can support bzip2
1078
1079 if test "$use_bzip2" = yes ; then
1080   _cppflags="${CPPFLAGS}"
1081   _ldflags="${LDFLAGS}"
1082   AC_ARG_WITH(bzip2,
1083      AC_HELP_STRING([--with-bzip2=DIR],[look for bzip2 in DIR]),
1084       [
1085       if test -d "$withval" ; then
1086         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1087         LDFLAGS="${LDFLAGS} -L$withval/lib"
1088       fi
1089       ],withval="")
1090
1091   # Checking alongside stdio.h as an early version of bzip2 (1.0)
1092   # required stdio.h to be included before bzlib.h, and Solaris 9 is 
1093   # woefully out of date.
1094   if test "$withval" != no ; then
1095      AC_CHECK_HEADER(bzlib.h,
1096         AC_CHECK_LIB(bz2,BZ2_bzCompressInit,
1097           [
1098           have_bz2=yes
1099           ZLIBS="$ZLIBS -lbz2"
1100           AC_DEFINE(HAVE_BZIP2,1,
1101                   [Defined if the bz2 compression library is available])
1102           ],
1103           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1104           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags},[#include <stdio.h>])
1105   fi
1106 fi
1107 AM_CONDITIONAL(ENABLE_BZIP2_SUPPORT,test x"$have_bz2" = "xyes")
1108 AC_SUBST(ZLIBS)
1109
1110
1111 # Check for readline support
1112 GNUPG_CHECK_READLINE
1113
1114 # See wether we want to run the long test suite.
1115 AC_ARG_WITH(pkits-tests,
1116     AC_HELP_STRING([--with-pkits-tests],[run the PKITS based tests]),
1117     [run_pkits_tests=$withval], [run_pkits_tests=no])
1118 AM_CONDITIONAL(RUN_PKITS_TESTS, test "$run_pkits_tests" = "yes")
1119
1120 #
1121 # Allow users to append something to the version string without
1122 # flagging it as development version.  The user version parts is
1123 # considered everything after a dash. 
1124 #
1125 if test "$development_version" != yes; then
1126   changequote(,)dnl
1127   tmp_pat='[a-zA-Z]'
1128   changequote([,])dnl
1129   if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
1130     development_version=yes
1131   fi
1132 fi
1133 if test "$development_version" = yes; then
1134     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
1135             [Defined if this is not a regular release])
1136 fi
1137
1138 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
1139
1140 GNUPG_CHECK_GNUMAKE
1141
1142 # Add some extra libs here so that previous tests don't fail for
1143 # mysterious reasons - the final link step should bail out. 
1144 if test "$have_w32_system" = yes; then
1145    NETLIBS="${NETLIBS} -lwsock32"
1146 fi
1147
1148 AC_SUBST(NETLIBS)
1149
1150
1151 #
1152 # Setup gcc specific options
1153 #
1154 if test "$GCC" = yes; then
1155     # Note that it is okay to use CFLAGS here because this are just
1156     # warning options and the user should have a chance of overriding
1157     # them.
1158     if test "$USE_MAINTAINER_MODE" = "yes"; then
1159         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
1160         CFLAGS="$CFLAGS -Wno-format-y2k -Wformat-security -Wformat-nonliteral"
1161     else
1162         CFLAGS="$CFLAGS -Wall"
1163     fi
1164
1165     AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign])
1166     _gcc_cflags_save=$CFLAGS
1167     CFLAGS="-Wno-pointer-sign"
1168     AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_psign=yes,_gcc_psign=no)
1169     AC_MSG_RESULT($_gcc_psign)
1170     CFLAGS=$_gcc_cflags_save;
1171     if test x"$_gcc_psign" = xyes ; then
1172        CFLAGS="$CFLAGS -Wno-pointer-sign"
1173     fi
1174 fi
1175
1176
1177 #
1178 # This is handy for debugging so the compiler doesn't rearrange
1179 # things and eliminate variables.
1180 #
1181 AC_ARG_ENABLE(optimization,
1182    AC_HELP_STRING([--disable-optimization],
1183                   [disable compiler optimization]),
1184                   [if test $enableval = no ; then
1185                       CFLAGS=`echo $CFLAGS | sed 's/-O[[0-9]]//'`
1186                    fi])
1187
1188 #
1189 # For W32 we need to use our Pth emulation code
1190 #
1191 if test "$have_w32_system" = yes; then
1192   AC_CONFIG_LINKS(pth.h:jnlib/w32-pth.h)
1193 fi
1194
1195
1196 #
1197 # Prepare building of estream
1198 #
1199 estream_INIT
1200
1201
1202 #
1203 # Decide what to build
1204 #
1205 missing_pth=no
1206 if test $have_ksba = no; then
1207   build_gpgsm=no
1208   build_scdaemon=no
1209 fi
1210
1211 build_agent_threaded=""
1212 if test "$build_agent" = "yes"; then
1213   if test $have_pth = no; then
1214      build_agent_threaded="(not multi-threaded)"
1215      missing_pth=yes
1216   fi
1217 fi
1218
1219 build_scdaemon_extra=""
1220 if test "$build_scdaemon" = "yes"; then
1221   tmp=""
1222   if test $have_pth = no; then
1223      build_scdaemon_extra="not multi-threaded"
1224      tmp=", "
1225      missing_pth=yes
1226   fi
1227   if test $have_libusb = no; then
1228      build_scdaemon_extra="${tmp}without internal CCID driver"
1229      tmp=", "
1230   fi
1231   if test -n "$build_scdaemon_extra"; then
1232      build_scdaemon_extra="(${build_scdaemon_extra})"
1233   fi
1234 fi
1235
1236
1237 if test "$build_agent_only" = "yes" ; then
1238   build_gpg=no
1239   build_gpgsm=no
1240   build_scdaemon=no
1241   build_tools=no
1242   build_doc=no
1243 fi
1244
1245
1246 AM_CONDITIONAL(BUILD_GPG,   test "$build_gpg" = "yes")
1247 AM_CONDITIONAL(BUILD_GPGSM, test "$build_gpgsm" = "yes")
1248 AM_CONDITIONAL(BUILD_AGENT, test "$build_agent" = "yes")
1249 AM_CONDITIONAL(BUILD_SCDAEMON, test "$build_scdaemon" = "yes")
1250 AM_CONDITIONAL(BUILD_TOOLS, test "$build_tools" = "yes")
1251 AM_CONDITIONAL(BUILD_DOC,   test "$build_doc" = "yes")
1252 AM_CONDITIONAL(BUILD_SYMCRYPTRUN, test "$build_symcryptrun" = "yes")
1253
1254 AM_CONDITIONAL(RUN_GPG_TESTS,
1255         test x$cross_compiling = xno -a "$build_gpg" = yes )
1256
1257
1258 #
1259 # Print errors here so that they are visible all
1260 # together and the user can acquire them all together.
1261 #
1262 die=no
1263 if test "$have_gpg_error" = "no"; then
1264    die=yes
1265    AC_MSG_NOTICE([[
1266 ***  
1267 *** You need libgpg-error to build this program.
1268 **  This library is for example available at
1269 ***   ftp://ftp.gnupg.org/gcrypt/libgpg-error
1270 *** (at least version $NEED_GPG_ERROR_VERSION is required.)
1271 ***]])
1272 fi
1273 if test "$have_libgcrypt" = "no"; then
1274    die=yes
1275    AC_MSG_NOTICE([[
1276 ***  
1277 *** You need libgcrypt to build this program.
1278 **  This library is for example available at
1279 ***   ftp://ftp.gnupg.org/gcrypt/libgcrypt/
1280 *** (at least version $NEED_LIBGCRYPT_VERSION using API $NEED_LIBGCRYPT_API is required.)
1281 ***]])
1282 fi
1283 if test "$have_libassuan" = "no"; then
1284    die=yes
1285    AC_MSG_NOTICE([[
1286 ***
1287 *** You need libassuan with Pth support to build this program.
1288 *** This library is for example available at
1289 ***   ftp://ftp.gnupg.org/gcrypt/libassuan/
1290 *** (at least version $NEED_LIBASSUAN_VERSION (API $NEED_LIBASSUAN_API) is required).
1291 ***]])
1292 fi
1293 if test "$have_ksba" = "no"; then
1294     AC_MSG_NOTICE([[
1295 ***
1296 *** You need libksba to build this program.
1297 *** This library is for example available at
1298 ***   ftp://ftp.gnupg.org/gcrypt/libksba/
1299 *** (at least version $NEED_KSBA_VERSION using API $NEED_KSBA_API is required).
1300 ***]])
1301 fi
1302 if test "$missing_pth" = "yes"; then
1303     AC_MSG_NOTICE([[
1304 ***
1305 *** It is now required to build with support for the
1306 *** GNU Portable Threads Library (Pth). Please install this
1307 *** library first.  The library is for example available at
1308 ***   ftp://ftp.gnu.org/gnu/pth/
1309 *** On a Debian GNU/Linux system you can install it using 
1310 ***   apt-get install libpth-dev
1311 ***]])
1312    die=yes
1313 fi
1314
1315 if test "$die" = "yes"; then
1316     AC_MSG_ERROR([[
1317 ***
1318 *** Required libraries not found. Please consult the above messages
1319 *** and install them before running configure again.
1320 ***]])
1321 fi
1322
1323
1324
1325 AC_CONFIG_FILES([ m4/Makefile 
1326 Makefile
1327 po/Makefile.in
1328 intl/Makefile
1329 gl/Makefile
1330 include/Makefile
1331 jnlib/Makefile
1332 common/Makefile
1333 kbx/Makefile
1334 g10/Makefile
1335 sm/Makefile
1336 agent/Makefile
1337 scd/Makefile
1338 keyserver/Makefile
1339 keyserver/gpg2keys_mailto
1340 keyserver/gpg2keys_test
1341 tools/gpg-zip
1342 tools/Makefile
1343 doc/Makefile
1344 tests/Makefile
1345 tests/openpgp/Makefile
1346 ])
1347 AC_OUTPUT
1348
1349 #tests/pkits/Makefile
1350
1351
1352
1353
1354 echo "
1355         GnuPG v${VERSION} has been configured as follows:
1356         
1357         Platform:  $PRINTABLE_OS_NAME ($host)
1358
1359         OpenPGP:   $build_gpg
1360         S/MIME:    $build_gpgsm
1361         Agent:     $build_agent $build_agent_threaded
1362         Smartcard: $build_scdaemon $build_scdaemon_extra
1363
1364         Protect tool:      $show_gnupg_protect_tool_pgm
1365         Default agent:     $show_gnupg_agent_pgm
1366         Default pinentry:  $show_gnupg_pinentry_pgm
1367         Default scdaemon:  $show_gnupg_scdaemon_pgm
1368         Default dirmngr:   $show_gnupg_dirmngr_pgm
1369
1370         PKITS based tests: $run_pkits_tests
1371 "
1372