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