A couple of fixes. gpg2's key generation does now work.
[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.52)
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], [1.9.22])
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         [gnupg-devel@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=yes
41 NEED_GPG_ERROR_VERSION=1.0
42
43 NEED_LIBGCRYPT_API=1
44 NEED_LIBGCRYPT_VERSION=1.1.94
45
46 NEED_LIBASSUAN_VERSION=0.6.10
47
48 NEED_KSBA_VERSION=0.9.13
49
50
51 PACKAGE=$PACKAGE_NAME
52 PACKAGE_GT=${PACKAGE_NAME}2
53 VERSION=$PACKAGE_VERSION
54
55 AC_CONFIG_AUX_DIR(scripts)
56 AC_CONFIG_SRCDIR(sm/gpgsm.c)
57 AM_CONFIG_HEADER(config.h)
58 AC_CANONICAL_TARGET()
59 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
60
61 AC_GNU_SOURCE
62
63 # Some status variables to give feedback at the end of a configure run
64 have_gpg_error=no
65 have_libgcrypt=no 
66 have_libassuan=no
67 have_ksba=no
68 have_pth=no
69
70 GNUPG_BUILD_PROGRAM(gpg, no)
71 GNUPG_BUILD_PROGRAM(gpgsm, yes)
72 GNUPG_BUILD_PROGRAM(agent, yes)
73 GNUPG_BUILD_PROGRAM(scdaemon, yes)
74 GNUPG_BUILD_PROGRAM(symcryptrun, no)
75
76
77 AC_SUBST(PACKAGE)
78 AC_SUBST(PACKAGE_GT)
79 AC_SUBST(VERSION)
80 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
81 AC_DEFINE_UNQUOTED(PACKAGE_GT, "$PACKAGE_GT",
82                                 [Name of this package for gettext])
83 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
84 AC_DEFINE_UNQUOTED(PACKAGE_BUGREPORT, "$PACKAGE_BUGREPORT",
85                                         [Bug report address])
86 AC_DEFINE_UNQUOTED(NEED_LIBGCRYPT_VERSION, "$NEED_LIBGCRYPT_VERSION",
87                                        [Required version of Libgcrypt])
88 AC_DEFINE_UNQUOTED(NEED_KSBA_VERSION, "$NEED_KSBA_VERSION",
89                                        [Required version of Libksba])
90
91
92
93 # The default is to use the modules from this package and the few
94 # other packages in a standard place; i.e where this package gets
95 # installed.  With these options it is possible to override these
96 # ${prefix} depended values with fixed paths, which can't be replaced
97 # at make time.  See also am/cmacros.am and the defaults in AH_BOTTOM.
98 AC_ARG_WITH(agent-pgm,
99     [  --with-agent-pgm=PATH  Use PATH as the default for the agent)],
100           GNUPG_AGENT_PGM="$withval", GNUPG_AGENT_PGM="" )
101 AC_SUBST(GNUPG_AGENT_PGM)
102 AM_CONDITIONAL(GNUPG_AGENT_PGM, test -n "$GNUPG_AGENT_PGM")
103 show_gnupg_agent_pgm="(default)"
104 test -n "$GNUPG_AGENT_PGM" && show_gnupg_agent_pgm="$GNUPG_AGENT_PGM"
105
106 AC_ARG_WITH(pinentry-pgm,
107     [  --with-pinentry-pgm=PATH  Use PATH as the default for the pinentry)],
108           GNUPG_PINENTRY_PGM="$withval", GNUPG_PINENTRY_PGM="" )
109 AC_SUBST(GNUPG_PINENTRY_PGM)
110 AM_CONDITIONAL(GNUPG_PINENTRY_PGM, test -n "$GNUPG_PINENTRY_PGM")
111 show_gnupg_pinentry_pgm="(default)"
112 test -n "$GNUPG_PINENTRY_PGM" && show_gnupg_pinentry_pgm="$GNUPG_PINENTRY_PGM"
113
114
115 AC_ARG_WITH(scdaemon-pgm,
116     [  --with-scdaemon-pgm=PATH  Use PATH as the default for the scdaemon)],
117           GNUPG_SCDAEMON_PGM="$withval", GNUPG_SCDAEMON_PGM="" )
118 AC_SUBST(GNUPG_SCDAEMON_PGM)
119 AM_CONDITIONAL(GNUPG_SCDAEMON_PGM, test -n "$GNUPG_SCDAEMON_PGM")
120 show_gnupg_scdaemon_pgm="(default)"
121 test -n "$GNUPG_SCDAEMON_PGM" && show_gnupg_scdaemon_pgm="$GNUPG_SCDAEMON_PGM"
122
123
124 AC_ARG_WITH(dirmngr-pgm,
125     [  --with-dirmngr-pgm=PATH  Use PATH as the default for the dirmngr)],
126           GNUPG_DIRMNGR_PGM="$withval", GNUPG_DIRMNGR_PGM="" )
127 AC_SUBST(GNUPG_DIRMNGR_PGM)
128 AM_CONDITIONAL(GNUPG_DIRMNGR_PGM, test -n "$GNUPG_DIRMNGR_PGM")
129 show_gnupg_dirmngr_pgm="(default)"
130 test -n "$GNUPG_DIRMNGR_PGM" && show_gnupg_dirmngr_pgm="$GNUPG_DIRMNGR_PGM"
131
132 AC_ARG_WITH(protect-tool-pgm,
133     [  --with-protect-tool-pgm=PATH  Use PATH as the default for the protect-tool)],
134           GNUPG_PROTECT_TOOL_PGM="$withval", GNUPG_PROTECT_TOOL_PGM="" )
135 AC_SUBST(GNUPG_PROTECT_TOOL_PGM)
136 AM_CONDITIONAL(GNUPG_PROTECT_TOOL_PGM, test -n "$GNUPG_PROTECT_TOOL_PGM")
137 show_gnupg_protect_tool_pgm="(default)"
138 test -n "$GNUPG_PROTECT_TOOL_PGM" \
139       && show_gnupg_protect_tool_pgm="$GNUPG_PROTECT_TOOL_PGM"
140
141
142
143 # Some folks want to use only the agent form this packet.  Make it
144 # easier for them by providing the configure option
145 # --enable-only-agent.
146 AC_ARG_ENABLE(agent-only,
147     AC_HELP_STRING([--enable-agent-only],[build only the gpg-agent]),
148     build_agent_only=$enableval)
149
150
151 # Allow disabling of bzib2 support.
152 # It is defined only after we confirm the library is available later
153 use_bzip2=yes
154 AC_MSG_CHECKING([whether to enable the BZIP2 compression algorithm])
155 AC_ARG_ENABLE(bzip2,
156    AC_HELP_STRING([--disable-bzip2],[disable the BZIP2 compression algorithm]),
157    use_bzip2=$enableval)
158 AC_MSG_RESULT($use_bzip2)
159
160
161 # Configure option to allow or disallow execution of external
162 # programs, like a photo viewer.
163 AC_MSG_CHECKING([whether to enable external program execution])
164 AC_ARG_ENABLE(exec,
165     AC_HELP_STRING([--disable-exec],[disable all external program execution]),
166     use_exec=$enableval)
167 AC_MSG_RESULT($use_exec)
168 if test "$use_exec" = no ; then
169     AC_DEFINE(NO_EXEC,1,[Define to disable all external program execution])
170 fi
171
172 if test "$use_exec" = yes ; then
173   AC_MSG_CHECKING([whether to enable photo ID viewing])
174   AC_ARG_ENABLE(photo-viewers,
175       [  --disable-photo-viewers disable photo ID viewers],
176       [if test "$enableval" = no ; then
177          AC_DEFINE(DISABLE_PHOTO_VIEWER,1,[define to disable photo viewing])
178       fi],enableval=yes)
179   gnupg_cv_enable_photo_viewers=$enableval
180   AC_MSG_RESULT($enableval)
181
182   if test "$gnupg_cv_enable_photo_viewers" = yes ; then
183     AC_MSG_CHECKING([whether to use a fixed photo ID viewer])
184     AC_ARG_WITH(photo-viewer,
185         [  --with-photo-viewer=FIXED_VIEWER  set a fixed photo ID viewer],
186         [if test "$withval" = yes ; then
187            withval=no
188         elif test "$withval" != no ; then
189            AC_DEFINE_UNQUOTED(FIXED_PHOTO_VIEWER,"$withval",
190                             [if set, restrict photo-viewer to this])
191         fi],withval=no)
192     AC_MSG_RESULT($withval)
193   fi
194
195   AC_MSG_CHECKING([whether to enable external keyserver helpers])
196   AC_ARG_ENABLE(keyserver-helpers,
197       [  --disable-keyserver-helpers  disable all external keyserver support],
198       [if test "$enableval" = no ; then
199          AC_DEFINE(DISABLE_KEYSERVER_HELPERS,1,
200                   [define to disable keyserver helpers])
201       fi],enableval=yes)
202   gnupg_cv_enable_keyserver_helpers=$enableval
203   AC_MSG_RESULT($enableval)
204
205   if test "$gnupg_cv_enable_keyserver_helpers" = yes ; then
206     AC_MSG_CHECKING([whether LDAP keyserver support is requested])
207     AC_ARG_ENABLE(ldap,
208     [  --disable-ldap          disable LDAP keyserver interface],
209         try_ldap=$enableval, try_ldap=yes)
210     AC_MSG_RESULT($try_ldap)
211
212     AC_MSG_CHECKING([whether HKP keyserver support is requested])
213     AC_ARG_ENABLE(hkp,
214     [  --disable-hkp           disable HKP keyserver interface],
215         try_hkp=$enableval, try_hkp=yes)
216     AC_MSG_RESULT($try_hkp)
217
218     if test "$try_hkp" = yes ; then
219       AC_SUBST(GPGKEYS_HKP,"gpgkeys_hkp$EXEEXT")
220     fi
221
222     AC_MSG_CHECKING([whether email keyserver support is requested])
223     AC_ARG_ENABLE(mailto,
224     [  --disable-mailto        disable email keyserver interface],
225         try_mailto=$enableval, try_mailto=yes)
226     AC_MSG_RESULT($try_mailto)
227     fi
228
229     AC_MSG_CHECKING([whether keyserver exec-path is enabled])
230     AC_ARG_ENABLE(keyserver-path,
231         [  --disable-keyserver-path disable the exec-path option for keyserver helpers],
232         [if test "$enableval" = no ; then
233          AC_DEFINE(DISABLE_KEYSERVER_PATH,1,[define to disable exec-path for keyserver helpers])
234         fi],enableval=yes)
235     AC_MSG_RESULT($enableval)
236   fi
237
238
239 dnl
240 dnl Check for the key/uid cache size.  This can't be zero, but can be
241 dnl pretty small on embedded systems.
242 dnl
243 AC_MSG_CHECKING([for the size of the key and uid cache])
244 AC_ARG_ENABLE(key-cache,
245         AC_HELP_STRING([--enable-key-cache=SIZE],[Set key cache to SIZE (default 4096)]),,enableval=4096)
246
247 if test "$enableval" = "no"; then
248    enableval=5
249 elif test "$enableval" = "yes" || test "$enableval" = ""; then
250    enableval=4096
251 fi
252
253 changequote(,)dnl
254 key_cache_size=`echo "$enableval" | sed 's/[A-Za-z]//g'`
255 changequote([,])dnl
256
257 if test "$enableval" != "$key_cache_size" || test "$key_cache_size" -lt 5; then
258    AC_MSG_ERROR([invalid key-cache size])
259 fi
260
261 AC_MSG_RESULT($key_cache_size)
262 AC_DEFINE_UNQUOTED(PK_UID_CACHE_SIZE,$key_cache_size,[Size of the key and UID caches])
263
264
265
266 dnl
267 dnl Check whether we want to use Linux capabilities
268 dnl
269 AC_MSG_CHECKING([whether use of capabilities is requested])
270 AC_ARG_WITH(capabilities,
271     [  --with-capabilities     use linux capabilities [default=no]],
272 [use_capabilities="$withval"],[use_capabilities=no])
273 AC_MSG_RESULT($use_capabilities)
274
275
276 AH_BOTTOM([
277 /* Some global constants. */
278 #ifdef HAVE_DRIVE_LETTERS
279 #define GNUPG_DEFAULT_HOMEDIR "c:/gnupg"
280 #elif defined(__VMS)
281 #define GNUPG_DEFAULT_HOMEDIR "/SYS\$LOGIN/gnupg" 
282 #else
283 #define GNUPG_DEFAULT_HOMEDIR "~/.gnupg"
284 #endif 
285 #define GNUPG_PRIVATE_KEYS_DIR "private-keys-v1.d"
286
287 /* Tell libgcrypt not to use its own libgpg-error implementation. */
288 #define USE_LIBGPG_ERROR 1
289
290 /* This is the major version number of GnuPG so that
291    source included files can test for this.  Note, that\
292    we use 2 here even for GnuPG 1.9.x. */
293 #define GNUPG_MAJOR_VERSION 2
294
295 /* Now to separate file name parts.
296    Please note that the string version must not contain more
297    than one character because the code assumes strlen()==1 */
298 #ifdef HAVE_DOSISH_SYSTEM
299 #define DIRSEP_C '\\'
300 #define DIRSEP_S "\\"
301 #define EXTSEP_C '.'
302 #define EXTSEP_S "."
303 #define PATHSEP_C ';'
304 #define PATHSEP_S ";"
305 #define EXEEXT_S ".exe"
306 #else
307 #define DIRSEP_C '/'
308 #define DIRSEP_S "/"
309 #define EXTSEP_C '.'
310 #define EXTSEP_S "."
311 #define PATHSEP_C ':'
312 #define PATHSEP_S ":"
313 #define EXEEXT_S ""
314 #endif
315
316 /* This is the same as VERSION, but should be overridden if the
317    platform cannot handle things like dots '.' in filenames. Set
318    SAFE_VERSION_DOT and SAFE_VERSION_DASH to whatever SAFE_VERSION
319    uses for dots and dashes. */
320 #define SAFE_VERSION VERSION
321 #define SAFE_VERSION_DOT  '.'
322 #define SAFE_VERSION_DASH '-'
323
324 /* For some systems (DOS currently), we hardcode the path here.  For
325    POSIX systems the values are constructed by the Makefiles, so that
326    the values may be overridden by the make invocations; this is to
327    comply with the GNU coding standards. */
328 #ifdef HAVE_DRIVE_LETTERS
329 #define GNUPG_BINDIR      "c:\\gnupg"
330 #define GNUPG_LIBEXECDIR  "c:\\gnupg"
331 #define GNUPG_LIBDIR      "c:\\gnupg"
332 #define GNUPG_DATADIR     "c:\\gnupg"
333 #endif
334
335 /* Setup the hardwired names of modules. */
336 #ifndef GNUPG_DEFAULT_AGENT
337 #define GNUPG_DEFAULT_AGENT    ( GNUPG_BINDIR DIRSEP_S "gpg-agent" EXEEXT_S )
338 #endif
339 #ifndef GNUPG_DEFAULT_PINENTRY
340 #define GNUPG_DEFAULT_PINENTRY ( GNUPG_BINDIR DIRSEP_S "pinentry" EXEEXT_S )
341 #endif
342 #ifndef GNUPG_DEFAULT_SCDAEMON
343 #define GNUPG_DEFAULT_SCDAEMON ( GNUPG_BINDIR DIRSEP_S "scdaemon" EXEEXT_S )
344 #endif
345 #ifndef GNUPG_DEFAULT_DIRMNGR
346 #define GNUPG_DEFAULT_DIRMNGR  ( GNUPG_BINDIR DIRSEP_S "dirmngr" EXEEXT_S )
347 #endif
348 #ifndef GNUPG_DEFAULT_PROTECT_TOOL
349 #define GNUPG_DEFAULT_PROTECT_TOOL \
350                     ( GNUPG_LIBEXECDIR DIRSEP_S "gpg-protect-tool" EXEEXT_S )
351 #endif
352
353
354 /* Derive some other constants. */
355 #if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
356 #define EXEC_TEMPFILE_ONLY
357 #endif
358
359 /* Temporary hacks to avoid requring a libgpg-error update. */
360 #if !HAVE_DECL_GPG_ERR_LOCKED
361 #define GPG_ERR_LOCKED  173
362 #endif
363
364 ])
365
366 AM_MAINTAINER_MODE
367
368 # Checks for programs.
369 AC_PROG_MAKE_SET
370 AM_SANITY_CHECK
371 missing_dir=`cd $ac_aux_dir && pwd`
372 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
373 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
374 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
375 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
376 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
377 AC_PROG_AWK
378 AC_PROG_CC
379 AC_PROG_CPP
380 AC_PROG_INSTALL
381 AC_PROG_LN_S
382 AC_PROG_MAKE_SET
383 AC_PROG_RANLIB
384 AC_CHECK_TOOL(AR, ar, :)
385 AC_PATH_PROG(PERL,"perl")
386 AC_ISC_POSIX
387 gl_EARLY
388 AC_SYS_LARGEFILE
389 AC_CHECK_PROG(DOCBOOK_TO_MAN, docbook-to-man, yes, no)
390 AM_CONDITIONAL(HAVE_DOCBOOK_TO_MAN, test "$ac_cv_prog_DOCBOOK_TO_MAN" = yes)
391 GNUPG_CHECK_FAQPROG
392 GNUPG_CHECK_DOCBOOK_TO_TEXI
393
394
395 try_gettext=yes
396 have_dosish_system=no
397 have_w32_system=no
398 case "${host}" in
399     *-mingw32*)
400         # special stuff for Windoze NT
401         ac_cv_have_dev_random=no
402         AC_DEFINE(USE_ONLY_8DOT3,1,
403                   [set this to limit filenames to the 8.3 format])
404         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
405                   [defined if we must run on a stupid file system])
406         AC_DEFINE(USE_SIMPLE_GETTEXT,1,
407                   [because the Unix gettext has too much overhead on
408                    MingW32 systems and these systems lack Posix functions,
409                    we use a simplified version of gettext])
410         have_dosish_system=yes
411         have_w32_system=yes
412         try_gettext="no"
413         ;;
414     i?86-emx-os2 | i?86-*-os2*emx )
415         # OS/2 with the EMX environment
416         ac_cv_have_dev_random=no
417         AC_DEFINE(HAVE_DRIVE_LETTERS)
418         have_dosish_system=yes
419         try_gettext="no"
420         ;;
421
422     i?86-*-msdosdjgpp*)
423         # DOS with the DJGPP environment
424         ac_cv_have_dev_random=no
425         AC_DEFINE(HAVE_DRIVE_LETTERS)
426         have_dosish_system=yes
427         try_gettext="no"
428         ;;
429
430     *-*-freebsd*)
431        # FreeBSD
432        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
433        LDFLAGS="$LDFLAGS -L/usr/local/lib"
434        ;;
435
436     *-*-hpux*)
437         if test -z "$GCC" ; then
438             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
439         fi
440         ;;
441     *-dec-osf4*)
442         if test -z "$GCC" ; then
443             # Suppress all warnings
444             # to get rid of the unsigned/signed char mismatch warnings.
445             CFLAGS="$CFLAGS -w"
446         fi
447         ;;
448     *-dec-osf5*)
449         if test -z "$GCC" ; then
450             # Use the newer compiler `-msg_disable ptrmismatch' to
451             # get rid of the unsigned/signed char mismatch warnings.
452             # Using this may hide other pointer mismatch warnings, but
453             # it at least lets other warning classes through
454             CFLAGS="$CFLAGS -msg_disable ptrmismatch"
455         fi
456         ;;
457     m68k-atari-mint)
458         ;;
459     *)
460        ;;
461 esac
462
463 if test "$have_dosish_system" = yes; then
464    AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
465              [Defined if we run on some of the PCDOS like systems 
466               (DOS, Windoze. OS/2) with special properties like
467               no file modes])
468 fi
469 AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
470
471 if test "$have_w32_system" = yes; then
472    AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
473 fi
474 AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
475
476 # These need to go after AC_PROG_CC so that $EXEEXT is defined
477 AC_DEFINE_UNQUOTED(EXEEXT,"$EXEEXT",[The executable file extension, if any])
478
479
480 #
481 # Checks for libraries.
482 #
483
484
485 #
486 # libgpg-error is a library with error codes shared between GnuPG
487 # related projects.
488 #
489 AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION",
490                   have_gpg_error=yes,have_gpg_error=no)
491 _tmp_gpg_error_save_cflags="$CFLAGS"
492 CFLAGS="$CFLAGS $GPG_ERROR_CFLAGS"
493 AC_CHECK_DECLS(GPG_ERR_LOCKED,,,[#include <gpg-error.h>])
494 CFLAGS="${_tmp_gpg_error_save_cflags}"
495
496
497 #
498 # Libgcrypt is our generic crypto library
499 #
500 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION",
501         have_libgcrypt=yes,have_libgcrypt=no)
502
503
504 #
505 # libassuan is used for IPC
506 #
507 AM_PATH_LIBASSUAN("$NEED_LIBASSUAN_VERSION",
508                   have_libassuan=yes,have_libassuan=no)
509
510
511 #
512 # libksba is our X.509 support library
513 #
514 AM_PATH_KSBA("$NEED_KSBA_VERSION",have_ksba=yes,have_ksba=no)
515
516 #
517 # libusb allows us to use the integrated CCID smartcard reader driver.
518 #
519 AC_CHECK_LIB(usb, usb_bulk_write,
520               [ LIBUSB_LIBS="$LIBUSB_LIBS -lusb"
521                 AC_DEFINE(HAVE_LIBUSB,1,
522                          [defined if libusb is available])
523              ])
524 AC_SUBST(LIBUSB_LIBS)
525 AC_CHECK_FUNCS(usb_create_match)
526
527 #
528 # Check wether it is necessary to link against libdl.
529 #
530 LIBS=""
531 AC_SEARCH_LIBS(dlopen, c dl,,,)
532 DL_LIBS=$LIBS
533 AC_SUBST(DL_LIBS)
534
535 #
536 # Checks for symcryptrun:
537 #
538
539 # libutil has openpty() and login_tty().
540 AC_CHECK_LIB(util, openpty,
541               [ LIBUTIL_LIBS="$LIBUTIL_LIBS -lutil"
542                 AC_DEFINE(HAVE_LIBUTIL,1,
543                          [defined if libutil is available])
544              ])
545 AC_SUBST(LIBUTIL_LIBS)
546
547 # shred is used to clean temporary plain text files.
548 AC_PATH_PROG(SHRED, shred, /usr/bin/shred)
549 AC_DEFINE_UNQUOTED(SHRED,
550         "${SHRED}", [defines the filename of the shred program])
551
552
553 #
554 # Check whether the (highly desirable) GNU Pth library is available
555 # Note, that we include a Pth emulation for W32.
556 #
557 AC_ARG_WITH(pth-prefix,
558             AC_HELP_STRING([--with-pth-prefix=PFX],
559                            [prefix where GNU Pth is installed (optional)]),
560      pth_config_prefix="$withval", pth_config_prefix="")
561 if test x$pth_config_prefix != x ; then
562    PTH_CONFIG="$pth_config_prefix/bin/pth-config"
563 fi
564 AC_PATH_PROG(PTH_CONFIG, pth-config, no)
565 if test "$have_w32_system" = no; then
566  if test "$PTH_CONFIG" = "no"; then
567     AC_MSG_WARN([[
568 ***
569 *** To support concurrent access to the gpg-agent and the SCdaemon
570 *** we need the support of the GNU Portable Threads Library.
571 *** Download it from ftp://ftp.gnu.org/gnu/pth/
572 *** On a Debian GNU/Linux system you might want to try 
573 ***   apt-get install libpth-dev
574 ***]])
575  else
576   GNUPG_PTH_VERSION_CHECK(1.3.7)
577   if test $have_pth = yes; then      
578      PTH_CFLAGS=`$PTH_CONFIG --cflags`
579      PTH_LIBS=`$PTH_CONFIG --ldflags`
580      PTH_LIBS="$PTH_LIBS `$PTH_CONFIG --libs --all`"
581      AC_DEFINE(USE_GNU_PTH, 1,
582               [Defined if the GNU Portable Thread Library should be used])
583      AC_DEFINE(HAVE_PTH, 1,
584               [Defined if the GNU Pth is available])
585   fi
586  fi
587 else 
588  have_pth=yes
589  PTH_CFLAGS=""
590  PTH_LIBS=""
591  AC_DEFINE(USE_GNU_PTH, 1)
592  AC_DEFINE(HAVE_PTH, 1)
593 fi
594 AC_SUBST(PTH_CFLAGS)
595 AC_SUBST(PTH_LIBS)
596
597
598 dnl Must check for network library requirements before doing link tests
599 dnl for ldap, for example. If ldap libs are static (or dynamic and without
600 dnl ELF runtime link paths), then link will fail and LDAP support won't
601 dnl be detected.
602
603 AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname,
604         [NETLIBS="-lnsl $NETLIBS"]))
605 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
606         [NETLIBS="-lsocket $NETLIBS"]))
607
608 dnl Now try for the resolver functions so we can use DNS SRV
609
610 AC_ARG_ENABLE(dns-srv,
611    AC_HELP_STRING([--disable-dns-srv],[disable the use of DNS SRV in HKP]),
612    use_dns_srv=$enableval,use_dns_srv=yes)
613
614 if test x"$try_hkp" = xyes && test x"$use_dns_srv" = xyes ; then
615   _srv_save_libs=$LIBS
616   LIBS=""
617   # the double underscore thing is a glibc-ism?
618   AC_SEARCH_LIBS(res_query,resolv bind,,
619                  AC_SEARCH_LIBS(__res_query,resolv bind,,use_dns_srv=no))
620   AC_SEARCH_LIBS(dn_expand,resolv bind,,
621                  AC_SEARCH_LIBS(__dn_expand,resolv bind,,use_dns_srv=no))
622   AC_SEARCH_LIBS(dn_skipname,resolv bind,,
623                  AC_SEARCH_LIBS(__dn_skipname,resolv bind,,use_dns_srv=no))
624
625   if test x"$use_dns_srv" = xyes ; then
626      AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
627      SRVLIBS=$LIBS
628   else
629      AC_MSG_WARN([Resolver functions not found.  Disabling DNS SRV.])
630   fi
631   LIBS=$_srv_save_libs
632 fi
633
634 AC_SUBST(SRVLIBS)
635
636 # Try and link a LDAP test program to weed out unusable LDAP
637 # libraries.  -lldap [-llber [-lresolv]] is for OpenLDAP.  OpenLDAP in
638 # general is terrible with creating weird dependencies.  If all else
639 # fails, the user can play guess-the-dependency by using something
640 # like ./configure LDAPLIBS="-Lfoo -lbar"
641
642 if test "$try_ldap" = yes ; then
643   for MY_LDAPLIBS in ${LDAPLIBS+"$LDAPLIBS"} "-lldap" "-lldap -llber" "-lldap -llber -lresolv"; do
644     _ldap_save_libs=$LIBS
645     LIBS="$MY_LDAPLIBS $NETLIBS $LIBS"
646
647     AC_MSG_CHECKING([whether LDAP via \"$MY_LDAPLIBS\" is present and sane])
648     AC_TRY_LINK([#include <ldap.h>],[ldap_open("foobar",1234);],
649                 [gnupg_cv_func_ldap_init=yes],[gnupg_cv_func_ldap_init=no])
650     AC_MSG_RESULT([$gnupg_cv_func_ldap_init])
651
652     if test $gnupg_cv_func_ldap_init = no; then
653       AC_MSG_CHECKING([whether I can make LDAP be sane with lber.h])
654       AC_TRY_LINK([#include <lber.h>
655 #include <ldap.h>],[ldap_open("foobar",1234);],
656          [gnupg_cv_func_ldaplber_init=yes],[gnupg_cv_func_ldaplber_init=no])
657       AC_MSG_RESULT([$gnupg_cv_func_ldaplber_init])
658     fi
659
660     if test "$gnupg_cv_func_ldaplber_init" = yes ; then
661        AC_DEFINE(NEED_LBER_H,1,[Define if the LDAP library requires including lber.h before ldap.h])
662     fi
663
664     if test "$gnupg_cv_func_ldap_init" = yes || \
665         test "$gnupg_cv_func_ldaplber_init" = yes ; then
666        LDAPLIBS=$MY_LDAPLIBS
667        GPGKEYS_LDAP="gpgkeys_ldap$EXEEXT"
668
669        AC_MSG_CHECKING([whether LDAP supports ldap_get_option])
670
671        if test "$gnupg_cv_func_ldap_init" = yes ; then
672           AC_TRY_LINK([#include <ldap.h>],
673              [ldap_get_option((void *)0,0,(void *)0);],
674              [gnupg_cv_func_ldap_get_option=yes],
675              [gnupg_cv_func_ldap_get_option=no])
676         else
677           AC_TRY_LINK([#include <lber.h>
678 #include <ldap.h>],[ldap_get_option((void *)0,0,(void *)0);],
679              [gnupg_cv_func_ldap_get_option=yes],
680              [gnupg_cv_func_ldap_get_option=no])
681        fi
682
683        AC_MSG_RESULT([$gnupg_cv_func_ldap_get_option])
684
685        if test "$gnupg_cv_func_ldap_get_option" = yes ; then
686           AC_DEFINE(HAVE_LDAP_GET_OPTION,1,[Define if the LDAP library has ldap_get_option])
687        else
688           AC_MSG_CHECKING([whether LDAP supports ld_errno])
689
690           if test "$gnupg_cv_func_ldap_init" = yes ; then
691             AC_TRY_COMPILE([#include <ldap.h>],
692                [LDAP *ldap; ldap->ld_errno;],
693                [gnupg_cv_func_ldap_ld_errno=yes],
694                [gnupg_cv_func_ldap_ld_errno=no])
695            else
696             AC_TRY_LINK([#include <lber.h>
697 #include <ldap.h>],[LDAP *ldap; ldap->ld_errno;],
698                [gnupg_cv_func_ldap_ld_errno=yes],
699                [gnupg_cv_func_ldap_ld_errno=no])
700           fi
701
702           AC_MSG_RESULT([$gnupg_cv_func_ldap_ld_errno])
703
704           if test "$gnupg_cv_func_ldap_ld_errno" = yes ; then
705              AC_DEFINE(HAVE_LDAP_LD_ERRNO,1,[Define if the LDAP library supports ld_errno])
706           fi
707        fi
708     fi
709
710     LIBS=$_ldap_save_libs
711
712     if test "$GPGKEYS_LDAP" != "" ; then break; fi
713   done
714 fi
715
716 AC_SUBST(GPGKEYS_LDAP)
717 AC_SUBST(LDAPLIBS)
718
719 dnl This isn't necessarily sendmail itself, but anything that gives a
720 dnl sendmail-ish interface to the outside world.  That includes qmail,
721 dnl postfix, etc.  Basically, anything that can handle "sendmail -t".
722
723 if test "$try_mailto" = yes ; then
724   AC_ARG_WITH(mailprog,[  --with-mailprog=NAME    use "NAME -t" for mail transport],,with_mailprog=yes)
725
726   if test "$with_mailprog" = yes ; then
727     AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
728     if test "$ac_cv_path_SENDMAIL" ; then
729       GPGKEYS_MAILTO="gpgkeys_mailto"
730     fi
731   elif test "$with_mailprog" != no ; then
732     AC_MSG_CHECKING([for a mail transport program])
733     AC_SUBST(SENDMAIL,$with_mailprog)
734     AC_MSG_RESULT($with_mailprog)
735     GPGKEYS_MAILTO="gpgkeys_mailto"
736   fi
737 fi
738
739 AC_SUBST(GPGKEYS_MAILTO)
740
741 case "${host}" in
742     *-mingw32*)
743         PRINTABLE_OS_NAME="MingW32"
744         ;;
745     *-*-cygwin*)
746         PRINTABLE_OS_NAME="Cygwin"
747         ;;
748     i?86-emx-os2 | i?86-*-os2*emx )
749         PRINTABLE_OS_NAME="OS/2"
750         ;;
751     i?86-*-msdosdjgpp*)
752         PRINTABLE_OS_NAME="MSDOS/DJGPP"
753         try_dynload=no
754         ;;
755     *-linux*)
756         PRINTABLE_OS_NAME="GNU/Linux"
757         ;;
758     *)
759         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
760         ;;
761 esac
762 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
763                    [A human readable text with the name of the OS])
764
765
766 AM_GNU_GETTEXT_VERSION(0.14.1)
767 if test "$try_gettext" = yes; then
768   AM_GNU_GETTEXT(,[need-ngettext])
769
770   # gettext requires some extra checks.  These really should be part of
771   # the basic AM_GNU_GETTEXT macro.  TODO: move other gettext-specific
772   # function checks to here.
773
774   AC_CHECK_FUNCS(strchr)
775 else
776   USE_NLS=no
777   USE_INCLUDED_LIBINTL=no
778   BUILD_INCLUDED_LIBINTL=no
779   AC_SUBST(USE_NLS)
780   AC_SUBST(USE_INCLUDED_LIBINTL)
781   AC_SUBST(BUILD_INCLUDED_LIBINTL)
782 fi
783
784 # Checks for header files.
785 AC_HEADER_STDC
786 AC_CHECK_HEADERS(string.h unistd.h langinfo.h termio.h locale.h)
787
788 # Checks for typedefs, structures, and compiler characteristics.
789 AC_C_CONST
790 AC_C_INLINE
791 AC_TYPE_SIZE_T
792 AC_TYPE_SIGNAL
793 AC_DECL_SYS_SIGLIST
794
795 GNUPG_CHECK_ENDIAN
796
797 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
798 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
799 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
800 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
801 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
802
803 AC_CHECK_SIZEOF(unsigned short)
804 AC_CHECK_SIZEOF(unsigned int)
805 AC_CHECK_SIZEOF(unsigned long)
806 AC_CHECK_SIZEOF(unsigned long long)
807 # Ensure that we have UINT64_C before we bother to check for uint64_t
808 # fixme: really needed in gnupg?  I think it is only useful in libcgrypt.
809 AC_CACHE_CHECK([for UINT64_C],[gnupg_cv_uint64_c_works],
810    AC_COMPILE_IFELSE(AC_LANG_PROGRAM([#include <inttypes.h>
811 uint64_t foo=UINT64_C(42);]),gnupg_cv_uint64_c_works=yes,gnupg_cv_uint64_c_works=no))
812 if test "$gnupg_cv_uint64_c_works" = "yes" ; then
813    AC_CHECK_SIZEOF(uint64_t)
814 fi
815  
816
817
818
819 if test "$ac_cv_sizeof_unsigned_short" = "0" \
820    || test "$ac_cv_sizeof_unsigned_int" = "0" \
821    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
822     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
823 fi
824
825 dnl Do we have any 64-bit data types?
826 if test "$ac_cv_sizeof_unsigned_int" != "8" \
827    && test "$ac_cv_sizeof_unsigned_long" != "8" \
828    && test "$ac_cv_sizeof_unsigned_long_long" != "8" \
829    && test "$ac_cv_sizeof_uint64_t" != "8"; then
830     AC_MSG_WARN([No 64-bit types.  Disabling SHA-384, and SHA-512])
831 else
832   if test x"$use_sha512" = xyes ; then
833      AC_SUBST(SHA512_O,sha512.o)
834      AC_DEFINE(USE_SHA512,1,[Define to include the SHA-384 and SHA-512 digests])
835   fi
836 fi
837
838 # fixme: do we really need this - it should be encapsulated in libassuan
839 GNUPG_SYS_SO_PEERCRED
840
841 # Checks for library functions.
842 AC_FUNC_FSEEKO
843 AC_FUNC_VPRINTF
844 AC_FUNC_FORK
845 AC_CHECK_FUNCS(strerror stpcpy strsep strlwr tcgetattr strtoul mmap)
846 AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid times gmtime_r)
847 AC_CHECK_FUNCS(memmove gettimeofday getrusage setrlimit clock_gettime)
848 AC_CHECK_FUNCS(atexit raise getpagesize strftime nl_langinfo setlocale)
849 AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask rand pipe stat getaddrinfo)
850 AC_CHECK_FUNCS(fseeko ftello ttyname isascii)
851
852 AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
853
854 # gnulib checks
855 gl_SOURCE_BASE(gl)
856 gl_M4_BASE(gl/m4)
857 gl_MODULES(setenv strsep mkdtemp vasprintf xsize)
858 gl_INIT
859
860 # These are needed by libjnlib - fixme: we should have macros for them
861 AC_CHECK_FUNCS(memicmp stpcpy strlwr strtoul memmove stricmp strtol)
862 AC_CHECK_FUNCS(getrusage setrlimit stat setlocale)
863 AC_CHECK_FUNCS(flockfile funlockfile fopencookie funopen)
864
865
866 #
867 # check for gethrtime and run a testprogram to see whether
868 # it is broken.  It has been reported that some Solaris and HP UX systems 
869 # raise an SIGILL
870 #
871 #  fixme: Do we need this - iirc, this is only used by libgcrypt.
872 #
873 AC_CACHE_CHECK([for gethrtime], 
874                [gnupg_cv_func_gethrtime],
875                [AC_TRY_LINK([#include <sys/times.h>],[
876                    hrtime_t tv;
877                    tv = gethrtime();
878                  ],
879                  [gnupg_cv_func_gethrtime=yes],
880                  [gnupg_cv_func_gethrtime=no])
881                ])
882 if test $gnupg_cv_func_gethrtime = yes; then
883      AC_DEFINE([HAVE_GETHRTIME], 1,
884                [Define if you have the `gethrtime(2)' function.])
885      AC_CACHE_CHECK([whether gethrtime is broken], 
886                [gnupg_cv_func_broken_gethrtime],
887                [AC_TRY_RUN([
888                    #include <sys/times.h>
889                    int main () {
890                    hrtime_t tv;
891                    tv = gethrtime(); 
892                  }
893                  ],
894                  [gnupg_cv_func_broken_gethrtime=no],
895                  [gnupg_cv_func_broken_gethrtime=yes],
896                  [gnupg_cv_func_broken_gethrtime=assume-no])
897                 ])
898     if test $gnupg_cv_func_broken_gethrtime = yes; then
899       AC_DEFINE([HAVE_BROKEN_GETHRTIME], 1,
900       [Define if `gethrtime(2)' does not work correctly i.e. issues a SIGILL.])
901     fi
902 fi
903      
904
905 GNUPG_CHECK_MLOCK
906 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
907
908 dnl
909 dnl Check whether we can use Linux capabilities as requested
910 dnl
911 #  fixme: Still required?
912 #
913 if test "$use_capabilities" = "yes" ; then
914 use_capabilities=no
915 AC_CHECK_HEADERS(sys/capability.h)
916 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
917   AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
918   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
919      AC_DEFINE(USE_CAPABILITIES,1,
920                [define if capabilities should be used])
921      AC_SUBST(CAPLIBS,"-lcap")
922      use_capabilities=yes
923   fi
924 fi
925 if test "$use_capabilities" = "no" ; then
926     AC_MSG_WARN([[
927 ***
928 *** The use of capabilities on this system is not possible.
929 *** You need a recent Linux kernel and some patches:
930 ***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
931 ***   fcap-module-990613.tar.gz     (kernel module)
932 ***   libcap-1.92.tar.gz            (user mode library and utilities)
933 *** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
934 *** set (filesystems menu). Be warned: This code is *really* ALPHA.
935 ***]])
936 fi
937 fi
938
939
940 # Sanity check regex.  Tests adapted from mutt.
941
942 AC_MSG_CHECKING([whether regular expression support is requested])
943 AC_ARG_ENABLE(regex,
944 [  --disable-regex         do not handle regular expressions in trust sigs],
945      use_regex=$enableval, use_regex=yes)
946 AC_MSG_RESULT($use_regex)
947
948 if test "$use_regex" = yes ; then
949   AC_MSG_CHECKING([whether the included regex lib is requested])
950   AC_ARG_WITH(included-regex,
951       [  --with-included-regex   use the included GNU regex library],
952       [gnupg_cv_included_regex="$withval"],[gnupg_cv_included_regex=no])
953   AC_MSG_RESULT($gnupg_cv_included_regex)
954
955   if test $gnupg_cv_included_regex = no ; then
956      # Does the system have regex functions at all?
957      AC_CHECK_FUNC(regcomp,gnupg_cv_included_regex=no,
958                            gnupg_cv_included_regex=yes)
959   fi
960
961   if test $gnupg_cv_included_regex = no ; then
962      AC_CACHE_CHECK([whether your system's regexp library is broken],
963        [gnupg_cv_regex_broken],
964        AC_TRY_RUN([
965 #include <unistd.h>
966 #include <regex.h>
967 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); }],
968        gnupg_cv_regex_broken=no, gnupg_cv_regex_broken=yes, gnupg_cv_regex_broken=yes))
969
970      if test $gnupg_cv_regex_broken = yes ; then
971       AC_MSG_WARN(your regex is broken - using the included GNU regex instead.)
972       gnupg_cv_included_regex=yes
973      fi
974   fi
975
976   if test $gnupg_cv_included_regex = yes; then
977      AC_DEFINE(USE_GNU_REGEX,1,[ Define if you want to use the included regex lib ])
978      AC_SUBST(REGEX_O,regex.o)
979   fi
980 else
981
982   AC_DEFINE(DISABLE_REGEX,1,[ Define to disable regular expression support ])
983 fi
984
985 #
986 # Do we have zlib? Must do it here because Solaris failed
987 # when compiling a conftest (due to the "-lz" from LIBS).
988 # Note that we combine zlib and bzlib2 in ZLIBS.
989 #
990 _cppflags="${CPPFLAGS}"
991 _ldflags="${LDFLAGS}"
992 AC_ARG_WITH(zlib,
993   [  --with-zlib=DIR         use libz in DIR],[
994     if test -d "$withval"; then
995       CPPFLAGS="${CPPFLAGS} -I$withval/include"
996       LDFLAGS="${LDFLAGS} -L$withval/lib"
997     fi
998   ])
999
1000 AC_CHECK_HEADER(zlib.h,
1001       AC_CHECK_LIB(z, deflateInit2_,
1002        ZLIBS="-lz",
1003        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1004        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
1005
1006 #
1007 # Check whether we can support bzip2
1008
1009 if test "$use_bzip2" = yes ; then
1010   _cppflags="${CPPFLAGS}"
1011   _ldflags="${LDFLAGS}"
1012   AC_ARG_WITH(bzip2,
1013      AC_HELP_STRING([--with-bzip2=DIR],[look for bzip2 in DIR]),
1014       [
1015       if test -d "$withval" ; then
1016         CPPFLAGS="${CPPFLAGS} -I$withval/include"
1017         LDFLAGS="${LDFLAGS} -L$withval/lib"
1018       fi
1019       ],withval="")
1020
1021   # Checking alongside stdio.h as an early version of bzip2 (1.0)
1022   # required stdio.h to be included before bzlib.h, and Solaris 9 is 
1023   # woefully out of date.
1024   if test "$withval" != no ; then
1025      AC_CHECK_HEADER(bzlib.h,
1026         AC_CHECK_LIB(bz2,BZ2_bzCompressInit,
1027           [
1028           have_bz2=yes
1029           ZLIBS="$ZLIBS -lbz2"
1030           AC_DEFINE(HAVE_BZIP2,1,
1031                   [Defined if the bz2 compression library is available])
1032           ],
1033           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
1034           CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags},[#include <stdio.h>])
1035   fi
1036 fi
1037 AM_CONDITIONAL(ENABLE_BZIP2_SUPPORT,test x"$have_bz2" = "xyes")
1038 AC_SUBST(ZLIBS)
1039
1040
1041 # See wether we want to run the long test suite.
1042 AC_ARG_WITH(pkits-tests,
1043     AC_HELP_STRING([--with-pkits-tests],[run the PKITS based tests]),
1044     [run_pkits_tests=$withval], [run_pkits_tests=no])
1045 AM_CONDITIONAL(RUN_PKITS_TESTS, test "$run_pkits_tests" = "yes")
1046
1047
1048 # Allow users to append something to the version string without
1049 # flagging it as development version.  The user version parts is
1050 # considered everything after a dash. 
1051 if test "$development_version" != yes; then
1052   changequote(,)dnl
1053   tmp_pat='[a-zA-Z]'
1054   changequote([,])dnl
1055   if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
1056     development_version=yes
1057   fi
1058 fi
1059 if test "$development_version" = yes; then
1060     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
1061             [Defined if this is not a regular release])
1062 fi
1063
1064 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
1065
1066 GNUPG_CHECK_GNUMAKE
1067
1068 # Add some extra libs here so that previous tests don't fail for
1069 # mysterious reasons - the final link step should bail out. 
1070 if test "$have_w32_system" = yes; then
1071    W32LIBS="-lwsock32"
1072 fi
1073
1074
1075 if test "$GCC" = yes; then
1076     if test "$USE_MAINTAINER_MODE" = "yes"; then
1077         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
1078         CFLAGS="$CFLAGS -Wno-format-y2k -Wformat-security"
1079     else
1080         CFLAGS="$CFLAGS -Wall"
1081     fi
1082 fi
1083
1084 #
1085 # This is handy for debugging so the compiler doesn't rearrange
1086 # things and eliminate variables.
1087 #
1088 AC_ARG_ENABLE(optimization,
1089    AC_HELP_STRING([--disable-optimization],
1090                   [disable compiler optimization]),
1091                   [if test $enableval = no ; then
1092                       CFLAGS=`echo $CFLAGS | sed 's/-O[[0-9]]//'`
1093                    fi])
1094
1095
1096
1097
1098 AC_SUBST(NETLIBS)
1099 AC_SUBST(W32LIBS)
1100
1101
1102 # We use jnlib, so tell other modules about it
1103 AC_DEFINE(HAVE_JNLIB_LOGGING, 1,
1104           [Defined if jnlib style logging functions are available])
1105
1106 # For W32 we need to use our Pth emulation code
1107 if test "$have_w32_system" = yes; then
1108   AC_CONFIG_LINKS(pth.h:jnlib/w32-pth.h)
1109 fi
1110
1111
1112 #
1113 # Decide what to build
1114 #
1115 missing_pth=no
1116 if test $have_ksba = no; then
1117   build_gpgsm=no
1118   build_scdaemon=no
1119 fi
1120
1121 build_agent_threaded=""
1122 if test "$build_agent" = "yes"; then
1123   if test $have_pth = no; then
1124      build_agent_threaded="(not multi-threaded)"
1125      missing_pth=yes
1126   fi
1127 fi
1128
1129 build_scdaemon_extra=""
1130 if test "$build_scdaemon" = "yes"; then
1131   tmp=""
1132   if test $have_pth = no; then
1133      build_scdaemon_extra="not multi-threaded"
1134      tmp=", "
1135      missing_pth=yes
1136   fi
1137   if test -n "$build_scdaemon_extra"; then
1138      build_scdaemon_extra="(${build_scdaemon_extra})"
1139   fi
1140 fi
1141
1142
1143 if test "$build_agent_only" = "yes" ; then
1144   build_gpg=no
1145   build_gpgsm=no
1146   build_scdaemon=no
1147 fi
1148
1149
1150 AM_CONDITIONAL(BUILD_GPG,   test "$build_gpg" = "yes")
1151 AM_CONDITIONAL(BUILD_GPGSM, test "$build_gpgsm" = "yes")
1152 AM_CONDITIONAL(BUILD_AGENT, test "$build_agent" = "yes")
1153 AM_CONDITIONAL(BUILD_SCDAEMON, test "$build_scdaemon" = "yes")
1154 AM_CONDITIONAL(BUILD_SYMCRYPTRUN, test "$build_symcryptrun" = "yes")
1155
1156
1157
1158 #
1159 # Print errors here so that they are visible all
1160 # together and the user can acquire them all together.
1161 #
1162 die=no
1163 if test "$have_gpg_error" = "no"; then
1164    die=yes
1165    AC_MSG_NOTICE([[
1166 ***  
1167 *** You need libgpg-error to build this program.
1168 **  This library is for example available at
1169 ***   ftp://ftp.gnupg.org/gcrypt/libgpg-error
1170 *** (at least version $NEED_GPG_ERROR_VERSION is required.)
1171 ***]])
1172 fi
1173 if test "$have_libgcrypt" = "no"; then
1174    die=yes
1175    AC_MSG_NOTICE([[
1176 ***  
1177 *** You need libgcrypt to build this program.
1178 **  This library is for example available at
1179 ***   ftp://ftp.gnupg.org/gcrypt/libgcrypt/
1180 *** (at least version $NEED_LIBGCRYPT_VERSION using API $NEED_LIBGCRYPT_API) is required.)
1181 ***]])
1182 fi
1183 if test "$have_libassuan" = "no"; then
1184    die=yes
1185    AC_MSG_NOTICE([[
1186 ***
1187 *** You need libassuan to build this program.
1188 *** This library is for example available at
1189 ***   ftp://ftp.gnupg.org/gcrypt/alpha/libassuan/
1190 *** (at least version $NEED_LIBASSUAN_VERSION is required).
1191 ***]])
1192 fi
1193 if test "$have_ksba" = "no"; then
1194     AC_MSG_NOTICE([[
1195 ***
1196 *** You need libksba to build this program.
1197 *** This library is for example available at
1198 ***   ftp://ftp.gnupg.org/gcrypt/alpha/libksba/
1199 *** (at least version $NEED_KSBA_VERSION is required).
1200 ***]])
1201 fi
1202 if test "$missing_pth" = "yes"; then
1203     AC_MSG_NOTICE([[
1204 ***
1205 *** It is now required to build with support for the
1206 *** GNU Portable Threads Library (Pth). Please install this
1207 *** library first.  The library is for example available at
1208 ***   ftp://ftp.gnu.org/gnu/pth/
1209 *** On a Debian GNU/Linux system you can install it using 
1210 ***   apt-get install libpth-dev
1211 ***]])
1212    die=yes
1213 fi
1214
1215 if test "$die" = "yes"; then
1216     AC_MSG_ERROR([[
1217 ***
1218 *** Required libraries not found. Please consult the above messages
1219 *** and install them before running configure again.
1220 ***]])
1221 fi
1222
1223
1224
1225 AC_CONFIG_FILES([ m4/Makefile 
1226 Makefile
1227 po/Makefile.in
1228 intl/Makefile
1229 gl/Makefile
1230 jnlib/Makefile
1231 common/Makefile
1232 kbx/Makefile
1233 g10/Makefile
1234 sm/Makefile
1235 agent/Makefile
1236 scd/Makefile
1237 tools/Makefile
1238 doc/Makefile
1239 tests/Makefile
1240 ])
1241 AC_OUTPUT
1242
1243 #tests/pkits/Makefile
1244
1245
1246
1247
1248 echo "
1249         GnuPG v${VERSION} has been configured as follows:
1250         
1251         Platform:  $PRINTABLE_OS_NAME ($host)
1252
1253         OpenPGP:   $build_gpg
1254         S/MIME:    $build_gpgsm
1255         Agent:     $build_agent $build_agent_threaded
1256         Smartcard: $build_scdaemon $build_scdaemon_extra
1257
1258         Protect tool:      $show_gnupg_protect_tool_pgm
1259         Default agent:     $show_gnupg_agent_pgm
1260         Default pinentry:  $show_gnupg_pinentry_pgm
1261         Default scdaemon:  $show_gnupg_scdaemon_pgm
1262         Default dirmngr:   $show_gnupg_dirmngr_pgm
1263
1264         PKITS based tests: $run_pkits_tests
1265 "
1266