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