07b38f973d9bf28ed7072a0b0e5225626305b68d
[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, 1.9.0-cvs, gnupg-devel@gnupg.org)
25 NEED_LIBGCRYPT_VERSION=1.1.8
26 NEED_KSBA_VERSION=0.4.6
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 # Same goes for the pkglibdir which is used to call the gpg-protect-tool.
142 eval my_default_pkglibdir=${exec_prefix}
143 test "x${my_default_pkglibdir}" = xNONE && my_default_pkglibdir=${ac_default_prefix}
144 my_default_pkglibdir=${my_default_pkglibdir}/lib/${PACKAGE_NAME}
145
146 AC_ARG_WITH(agent-pgm,
147     [  --with-agent-pgm=PATH  Use PATH as the default for the gpg-agent)],
148           gnupg_agent_pgm="$withval",
149           gnupg_agent_pgm="${my_default_bindir}/gpg-agent" )
150 AC_DEFINE_UNQUOTED(GNUPG_DEFAULT_AGENT, "$gnupg_agent_pgm",
151                    [Default location of the gpg-agent program])
152 AC_ARG_WITH(pinentry-pgm,
153     [  --with-pinentry-pgm=PATH  Use PATH as the default for the pinentry)],
154           gnupg_pinentry_pgm="$withval", gnupg_pinentry_pgm="" )
155 if test -z "$gnupg_pinentry_pgm"; then
156   gnupg_pinentry_pgm=${my_default_bindir}/pinentry
157 fi
158 AC_DEFINE_UNQUOTED(GNUPG_DEFAULT_PINENTRY, "$gnupg_pinentry_pgm",
159                    [Default location of the pinentry program])
160 AC_ARG_WITH(scdaemon-pgm,
161     [  --with-scdaemon-pgm=PATH  Use PATH as the default for the scdaemon)],
162           gnupg_scdaemon_pgm="$withval", gnupg_scdaemon_pgm="" )
163 if test -z "$gnupg_scdaemon_pgm"; then
164   gnupg_scdaemon_pgm=${my_default_bindir}/scdaemon
165 fi
166 AC_DEFINE_UNQUOTED(GNUPG_DEFAULT_SCDAEMON, "$gnupg_scdaemon_pgm",
167                    [Default location of the scdaemon program])
168 AC_ARG_WITH(dirmngr-pgm,
169     [  --with-dirmngr-pgm=PATH  Use PATH as the default for the dirmngr)],
170           gnupg_dirmngr_pgm="$withval", gnupg_dirmngr_pgm="" )
171 if test -z "$gnupg_dirmngr_pgm"; then
172   gnupg_dirmngr_pgm=${my_default_bindir}/dirmngr
173 fi
174 AC_DEFINE_UNQUOTED(GNUPG_DEFAULT_DIRMNGR, "$gnupg_dirmngr_pgm",
175                    [Default location of the dirmngr program])
176
177 AC_ARG_WITH(protect-tool,
178     [  --with-protect-tool=PATH  Use PATH as the protect-tool)],
179           gnupg_protect_tool="$withval", gnupg_protect_tool="" )
180 if test -z "$gnupg_protect_tool"; then
181   gnupg_protect_tool=${my_default_pkglibdir}/gpg-protect-tool
182 fi
183 AC_DEFINE_UNQUOTED(GNUPG_PROTECT_TOOL, "$gnupg_protect_tool",
184                    [Name of the protect tool program])
185
186
187 #
188 # Checks for libraries.
189 #
190
191 #
192 # Libgcrypt is our generic crypto library
193 #
194 #AC_PATH_PROG(LIBGCRYPT_CONFIG, libgcrypt-config)
195 #if test -n "$LIBGCRYPT_CONFIG"; then
196 #       LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG --cflags`
197 #       LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG --libs`
198 #else
199 #    AC_MSG_ERROR([[
200 #***
201 #*** You need libgcrypt to build this program.
202 #*** It should be available at the same place you 
203 #*** got this software.
204 #***]])
205 #fi
206 #AC_SUBST(LIBGCRYPT_CFLAGS)
207 #AC_SUBST(LIBGCRYPT_LIBS)
208 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_VERSION",,
209         AC_MSG_ERROR([[
210 ***  
211 *** libgcrypt was not found. You may want to get it from
212 *** ftp://ftp.gnupg.org/pub/gcrypt/alpha/libgcrypt/
213 ***
214 ]]))
215
216
217 #
218 # libksba is our X.509 support library
219 #
220 AM_PATH_KSBA("$NEED_KSBA_VERSION",have_ksba=yes,have_ksba=no)
221 if test "$have_ksba" = "no"; then
222     AC_MSG_ERROR([[
223 ***
224 *** You need libksba to build this program..
225 *** It should be available at the same place you 
226 *** got this software.
227 ***]])
228 fi
229
230
231 #
232 # OpenSC is needed by the SCdaemon - if it is not availbale we won't 
233 # build the SCdaemon
234 #
235 AM_PATH_OPENSC("$NEED_OPENSC_VERSION",have_opensc=yes,have_opensc=no)
236
237
238 #
239 # Check whether the (highly desirable) GNU Pth library is available
240 #
241 AC_ARG_WITH(pth-prefix,
242             AC_HELP_STRING([--with-pth-prefix=PFX],
243                            [prefix where GNU Pth is installed (optional)]),
244      pth_config_prefix="$withval", pth_config_prefix="")
245 if test x$pth_config_prefix != x ; then
246    PTH_CONFIG="$pth_config_prefix/bin/pth-config"
247 fi
248 AC_PATH_PROG(PTH_CONFIG, pth-config, no)
249 if test "$PTH_CONFIG" = "no"; then
250     AC_MSG_WARN([[
251 ***
252 *** To support concurrent access to the gpg-agent and the SCdaemon
253 *** we need the support of the GNU Portable Threads Library.
254 *** Download it from ftp://ftp.gnu.org/gnu/pth/
255 *** On a Debian GNU/Linux system you might want to try 
256 ***   apt-get install libpth-dev
257 ***]])
258 else
259   GNUPG_PTH_VERSION_CHECK(1.3.7)
260   if test $have_pth = yes; then      
261      PTH_CFLAGS=`$PTH_CONFIG --cflags`
262      PTH_LIBS=`$PTH_CONFIG --ldflags`
263      PTH_LIBS="$PTH_LIBS `$PTH_CONFIG --libs`"
264      AC_DEFINE(USE_GNU_PTH, 1,
265               [Defined if the GNU Portable Thread Library should be used])
266   fi
267 fi
268 AC_SUBST(PTH_CFLAGS)
269 AC_SUBST(PTH_LIBS)
270
271
272 AM_GNU_GETTEXT
273
274
275 # Checks for header files.
276 AC_HEADER_STDC
277 AC_CHECK_HEADERS([string.h locale.h])
278
279 # Checks for typedefs, structures, and compiler characteristics.
280 AC_C_CONST
281 AC_C_INLINE
282 AC_TYPE_SIZE_T
283 AC_TYPE_SIGNAL
284 AC_DECL_SYS_SIGLIST
285
286 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
287 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
288 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
289
290 GNUPG_SYS_SO_PEERCRED
291
292 # Checks for library functions.
293
294 # These are needed by libjnlib - fixme: we should have a macros for them
295 AC_CHECK_FUNCS(memicmp stpcpy strlwr strtoul memmove stricmp strtol)
296 AC_CHECK_FUNCS(getrusage setrlimit stat setlocale)
297 AC_CHECK_FUNCS(flockfile funlockfile)
298
299 AC_CHECK_FUNCS(sigaction sigprocmask)
300
301 AC_REPLACE_FUNCS(vasprintf)
302 AC_REPLACE_FUNCS(fopencookie)
303 # FIXME: Print a warning when fopencookie is not available.
304 AC_REPLACE_FUNCS(mkdtemp)
305 AC_REPLACE_FUNCS(fseeko ftello)
306 AC_REPLACE_FUNCS(isascii)
307 AC_REPLACE_FUNCS(putc_unlocked)
308
309 # We use jnlib, so tell other modules about it
310 AC_DEFINE(HAVE_JNLIB_LOGGING, 1,
311         [Defined if jnlib style logging fucntions are available])
312
313
314 #
315 # Decide what to build
316 #
317 if test $have_opensc = no; then
318   build_scdaemon=no
319 fi
320
321 if test $have_ksba = no; then
322   build_gpgsm=no
323   build_scdaemon=no
324 fi
325
326 build_agent_threaded=""
327 if test "$build_agent" = "yes"; then
328   if test $have_pth = no; then
329      build_agent_threaded="(not multi-threaded)"
330   fi
331 fi
332
333 build_scdaemon_threaded=""
334 if test "$build_scdaemon" = "yes"; then
335   if test $have_pth = no; then
336      build_scdaemon_threaded="(not multi-threaded)"
337   fi
338 fi
339
340
341 AM_CONDITIONAL(BUILD_GPGSM, test "$build_gpgsm" = "yes")
342 AM_CONDITIONAL(BUILD_AGENT, test "$build_agent" = "yes")
343 AM_CONDITIONAL(BUILD_SCDAEMON, test "$build_scdaemon" = "yes")
344
345
346 AC_CONFIG_FILES([
347 Makefile
348 intl/Makefile
349 po/Makefile.in
350 jnlib/Makefile
351 assuan/Makefile
352 common/Makefile
353 kbx/Makefile
354 sm/Makefile
355 agent/Makefile
356 scd/Makefile
357 doc/Makefile
358 tests/Makefile
359 ])
360 AC_OUTPUT
361
362
363 echo "
364         NewPG v${VERSION} has been configured as follows:
365         
366         OpenPGP:   $build_gpg
367         S/MIME:    $build_gpgsm
368         Agent:     $build_agent $build_agent_threaded
369         Smartcard: $build_scdaemon $build_scdaemon_threaded  
370
371         Protect tool:     $gnupg_protect_tool
372         Default agent:    $gnupg_agent_pgm
373         Default pinentry: $gnupg_pinentry_pgm
374         Default scdaemon: $gnupg_scdaemon_pgm
375         Default dirmngr:  $gnupg_dirmngr_pgm
376 "