* configure.ac: Bumped version number to 1.9.0-cvs.
[gnupg.git] / configure.ac
1 # configure.ac - for GnuPG
2 #       Copyright (C) 2001, 2002 Free Software Foundation, Inc,
3
4 # This file is part of GnuPG.
5
6 # GnuPG is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10
11 # GnuPG is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19
20 # Process this file with autoconf to produce a configure script.
21 AC_PREREQ(2.52)
22 # Version number: Remember to change it immediately *after* a release.
23 #                 Add a "-cvs" prefix for non-released code.
24 AC_INIT(newpg, 1.9.0-cvs, gpa-dev@gnupg.org)
25 NEED_LIBGCRYPT_VERSION=1.1.8
26 NEED_KSBA_VERSION=0.4.4
27 NEED_OPENSC_VERSION=0.7.0
28 ALL_LINGUAS="de"
29
30 PACKAGE=$PACKAGE_NAME
31 VERSION=$PACKAGE_VERSION
32
33 AC_CONFIG_AUX_DIR(scripts)
34 AC_CONFIG_SRCDIR(sm/gpgsm.c)
35 AM_CONFIG_HEADER(config.h)
36 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
37 AM_MAINTAINER_MODE
38
39 # Some status variables to give feedback at the end of a configure run
40 have_ksba=no
41 have_opensc=no
42 have_pth=no
43
44 GNUPG_BUILD_PROGRAM(gpg, no)
45 GNUPG_BUILD_PROGRAM(gpgsm, yes)
46 GNUPG_BUILD_PROGRAM(agent, yes)
47 GNUPG_BUILD_PROGRAM(scdaemon, yes)
48
49
50 AH_TOP([
51 /* We need this, because some autoconf tests rely on this (e.g. stpcpy)
52    and it should be used for new programs anyway. */
53 #define _GNU_SOURCE  1
54 ])
55
56 AH_BOTTOM([
57 /* Some global constants. */
58 #ifdef HAVE_DRIVE_LETTERS
59 #define GNUPG_DEFAULT_HOMEDIR "c:/gnupg"
60 #else
61 #define GNUPG_DEFAULT_HOMEDIR "~/.gnupg"
62 #endif 
63 #define GNUPG_PRIVATE_KEYS_DIR "private-keys-v1.d"
64 ])
65
66
67
68 AC_SUBST(PACKAGE)
69 AC_SUBST(VERSION)
70 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
71 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
72 AC_DEFINE_UNQUOTED(PACKAGE_BUGREPORT, "$PACKAGE_BUGREPORT",
73                                         [Bug report address])
74 AC_DEFINE_UNQUOTED(NEED_LIBGCRYPT_VERSION, "$NEED_LIBGCRYPT_VERSION",
75                                        [Required version of Libgcrypt])
76 AC_DEFINE_UNQUOTED(NEED_KSBA_VERSION, "$NEED_KSBA_VERSION",
77                                        [Required version of Libksba])
78
79
80
81
82 # Checks for programs.
83 missing_dir=`cd $ac_aux_dir && pwd`
84 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
85 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
86 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
87 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
88 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
89 AC_PROG_AWK
90 AC_PROG_CC
91 AC_PROG_CPP
92 AC_PROG_INSTALL
93 AC_PROG_LN_S
94 AC_PROG_MAKE_SET
95 AC_PROG_RANLIB
96 #AC_ARG_PROGRAM
97
98 if test "$GCC" = yes; then
99     CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
100 fi
101
102 case "${target}" in
103     *-*-mingw32*)
104         PRINTABLE_OS_NAME="MingW32"
105         AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
106                   [defined if we run on some of the PCDOS like systems 
107                    (DOS, Windoze. OS/2) with special properties like
108                     no file modes])
109         ;;
110     i?86-emx-os2 | i?86-*-os2*emx )
111         PRINTABLE_OS_NAME="OS/2"
112         ;;
113     i?86-*-msdosdjgpp*)
114         PRINTABLE_OS_NAME="MSDOS/DJGPP"
115         try_dynload=no
116         ;;
117     *-linux*)
118         PRINTABLE_OS_NAME="GNU/Linux"
119         ;;
120 dnl let that after linux to avoid gnu-linux problems
121     *-gnu*)
122         PRINTABLE_OS_NAME="GNU/Hurd"
123         ;;
124     *)
125         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
126         ;;
127 esac
128 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
129                    [A human readable text with the name of the OS])
130
131
132 # I know that it is in general not a good idea to evaluate bindir in
133 # the configuration but we want to hard code the defaults into some of
134 # the programs and doing this during a make install is not a good
135 # idea.  We also have the problem that 2 of the programs are included
136 # in the package but the others are distributed in other packages.
137 eval my_default_bindir=${exec_prefix}
138 test "x${my_default_bindir}" = xNONE && my_default_bindir=${ac_default_prefix}
139 my_default_bindir=${my_default_bindir}/bin
140
141 AC_ARG_WITH(agent-pgm,
142     [  --with-agent-pgm=PATH  Use PATH as the default for the gpg-agent)],
143           gnupg_agent_pgm="$withval",
144           gnupg_agent_pgm="${my_default_bindir}/gpg-agent" )
145 AC_DEFINE_UNQUOTED(GNUPG_DEFAULT_AGENT, "$gnupg_agent_pgm",
146                    [Default location of the gpg-agent program])
147 AC_ARG_WITH(pinentry-pgm,
148     [  --with-pinentry-pgm=PATH  Use PATH as the default for the pinentry)],
149           gnupg_pinentry_pgm="$withval", gnupg_pinentry_pgm="" )
150 if test -z "$gnupg_pinentry_pgm"; then
151   gnupg_pinentry_pgm=${my_default_bindir}/pinentry
152 fi
153 AC_DEFINE_UNQUOTED(GNUPG_DEFAULT_PINENTRY, "$gnupg_pinentry_pgm",
154                    [Default location of the pinentry program])
155 AC_ARG_WITH(scdaemon-pgm,
156     [  --with-scdaemon-pgm=PATH  Use PATH as the default for the scdaemon)],
157           gnupg_scdaemon_pgm="$withval", gnupg_scdaemon_pgm="" )
158 if test -z "$gnupg_scdaemon_pgm"; then
159   gnupg_scdaemon_pgm=${my_default_bindir}/scdaemon
160 fi
161 AC_DEFINE_UNQUOTED(GNUPG_DEFAULT_SCDAEMON, "$gnupg_scdaemon_pgm",
162                    [Default location of the scdaemon program])
163 AC_ARG_WITH(dirmngr-pgm,
164     [  --with-dirmngr-pgm=PATH  Use PATH as the default for the dirmngr)],
165           gnupg_dirmngr_pgm="$withval", gnupg_dirmngr_pgm="" )
166 if test -z "$gnupg_dirmngr_pgm"; then
167   gnupg_dirmngr_pgm=${my_default_bindir}/dirmngr
168 fi
169 AC_DEFINE_UNQUOTED(GNUPG_DEFAULT_DIRMNGR, "$gnupg_dirmngr_pgm",
170                    [Default location of the dirmngr program])
171
172
173 #
174 # Checks for libraries.
175 #
176
177 #
178 # Libgcrypt is our generic crypto library
179 #
180 #AC_PATH_PROG(LIBGCRYPT_CONFIG, libgcrypt-config)
181 #if test -n "$LIBGCRYPT_CONFIG"; then
182 #       LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG --cflags`
183 #       LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG --libs`
184 #else
185 #    AC_MSG_ERROR([[
186 #***
187 #*** You need libgcrypt to build this program.
188 #*** It should be available at the same place you 
189 #*** got this software.
190 #***]])
191 #fi
192 #AC_SUBST(LIBGCRYPT_CFLAGS)
193 #AC_SUBST(LIBGCRYPT_LIBS)
194 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_VERSION",,
195         AC_MSG_ERROR([[
196 ***  
197 *** libgcrypt was not found. You may want to get it from
198 *** ftp://ftp.gnupg.org/pub/gcrypt/alpha/libgcrypt/
199 ***
200 ]]))
201
202
203 #
204 # libksba is our X.509 support library
205 #
206 AM_PATH_KSBA("$NEED_KSBA_VERSION",have_ksba=yes,have_ksba=no)
207 if test "$have_ksba" = "no"; then
208     AC_MSG_ERROR([[
209 ***
210 *** You need libksba to build this program..
211 *** It should be available at the same place you 
212 *** got this software.
213 ***]])
214 fi
215
216
217 #
218 # OpenSC is needed by the SCdaemon - if it is not availbale we won't 
219 # build the SCdaemon
220 #
221 AM_PATH_OPENSC("$NEED_OPENSC_VERSION",have_opensc=yes,have_opensc=no)
222
223
224 #
225 # Check whether the (highly desirable) GNU Pth library is available
226 #
227 AC_ARG_WITH(pth-prefix,
228             AC_HELP_STRING([--with-pth-prefix=PFX],
229                            [prefix where GNU Pth is installed (optional)]),
230      pth_config_prefix="$withval", pth_config_prefix="")
231 if test x$pth_config_prefix != x ; then
232    PTH_CONFIG="$pth_config_prefix/bin/pth-config"
233 fi
234 AC_PATH_PROG(PTH_CONFIG, pth-config, no)
235 if test "$PTH_CONFIG" = "no"; then
236     AC_MSG_WARN([[
237 ***
238 *** To support concurrent access to the gpg-agent and the SCdaemon
239 *** we need the support of the GNU Portable Threads Library.
240 *** Download it from ftp://ftp.gnu.org/gnu/pth/
241 *** On a Debian GNU/Linux system you might want to try 
242 ***   apt-get install libpth-dev
243 ***]])
244 else
245   GNUPG_PTH_VERSION_CHECK(1.3.7)
246   if test $have_pth = yes; then      
247      PTH_CFLAGS=`$PTH_CONFIG --cflags`
248      PTH_LIBS=`$PTH_CONFIG --libs`
249      AC_DEFINE(USE_GNU_PTH, 1,
250               [Defined if the GNU Portable Thread Library should be used])
251   fi
252 fi
253 AC_SUBST(PTH_CFLAGS)
254 AC_SUBST(PTH_LIBS)
255
256
257 AM_GNU_GETTEXT
258
259
260 # Checks for header files.
261 AC_HEADER_STDC
262 AC_CHECK_HEADERS([string.h locale.h])
263
264 # Checks for typedefs, structures, and compiler characteristics.
265 AC_C_CONST
266 AC_C_INLINE
267 AC_TYPE_SIZE_T
268 AC_TYPE_SIGNAL
269 AC_DECL_SYS_SIGLIST
270
271 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
272 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
273 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
274
275 GNUPG_SYS_SO_PEERCRED
276
277 # Checks for library functions.
278
279 # These are needed by libjnlib - fixme: we should have a macros for them
280 AC_CHECK_FUNCS(memicmp stpcpy strlwr strtoul memmove stricmp strtol)
281 AC_CHECK_FUNCS(getrusage setrlimit stat setlocale)
282
283 AC_CHECK_FUNCS(sigaction sigprocmask)
284
285 AC_REPLACE_FUNCS(vasprintf)
286 AC_REPLACE_FUNCS(fopencookie)
287 # FIXME: Print a warning when that fopencookie is not available.
288 AC_REPLACE_FUNCS(mkdtemp)
289 AC_REPLACE_FUNCS(fseeko ftello)
290
291 # We use jnlib, so tell other modules about it
292 AC_DEFINE(HAVE_JNLIB_LOGGING, 1,
293         [Defined if jnlib style logging fucntions are available])
294
295
296 #
297 # Decide what to build
298 #
299 if test $have_opensc = no; then
300   build_scdaemon=no
301 fi
302
303 if test $have_ksba = no; then
304   build_gpgsm=no
305   build_scdaemon=no
306 fi
307
308 build_agent_threaded=""
309 if test "$build_agent" = "yes"; then
310   if test $have_pth = no; then
311      build_agent_threaded="(not multi-threaded)"
312   fi
313 fi
314
315 build_scdaemon_threaded=""
316 if test "$build_scdaemon" = "yes"; then
317   if test $have_pth = no; then
318      build_scdaemon_threaded="(not multi-threaded)"
319   fi
320 fi
321
322
323 AM_CONDITIONAL(BUILD_GPGSM, test "$build_gpgsm" = "yes")
324 AM_CONDITIONAL(BUILD_AGENT, test "$build_agent" = "yes")
325 AM_CONDITIONAL(BUILD_SCDAEMON, test "$build_scdaemon" = "yes")
326
327
328 AC_CONFIG_FILES([
329 Makefile
330 intl/Makefile
331 po/Makefile.in
332 jnlib/Makefile
333 assuan/Makefile
334 common/Makefile
335 kbx/Makefile
336 sm/Makefile
337 agent/Makefile
338 scd/Makefile
339 doc/Makefile
340 tests/Makefile
341 ])
342 AC_OUTPUT
343
344
345 echo "
346         NewPG v${VERSION} has been configured as follows:
347         
348         OpenPGP:   $build_gpg
349         S/MIME:    $build_gpgsm
350         Agent:     $build_agent $build_agent_threaded
351         Smartcard: $build_scdaemon $build_scdaemon_threaded  
352
353         Default agent:    $gnupg_agent_pgm
354         Default pinentry: $gnupg_pinentry_pgm
355         Default scdaemon: $gnupg_scdaemon_pgm
356         Default dirmngr:  $gnupg_dirmngr_pgm
357 "