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