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