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