b06d4e32198efd2813b1a9edfb8ec6f1984bcf24
[gpgol.git] / configure.ac
1 # configure.ac - for GpgOL
2 # Copyright (C) 2005, 2006, 2007, 2008 g10 Code GmbH
3 #
4 # This file is free software; as a special exception the author gives
5 # unlimited permission to copy and/or distribute it, with or without
6 # modifications, as long as this notice is preserved.
7 #
8 # This program is distributed in the hope that it will be useful, but
9 # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
10 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11
12 # Process this file with autoconf to produce a configure script.
13 AC_PREREQ(2.59)
14 min_automake_version="1.9.4"
15
16 # Remember to change the version number immediately *after* a release.
17 # Set my_issvn to "yes" for non-released code.  Remember to run an
18 # "svn up" and "autogen.sh" right before creating a distribution.
19 m4_define([my_version], [0.10.8])
20 m4_define([my_issvn], [no])
21
22 m4_define([svn_revision], m4_esyscmd([echo -n $( (svn info 2>/dev/null \
23             || echo 'Revision: 0')|sed -n '/^Revision:/ {s/[^0-9]//gp;q;}')]))
24 AC_INIT([gpgol], my_version[]m4_if(my_issvn,[yes],[-svn[]svn_revision]),
25         [bug-gpgol@g10code.com])
26
27 NEED_GPG_ERROR_VERSION=1.4
28 NEED_GPGME_API=1
29 NEED_GPGME_VERSION=1.1.0
30 NEED_LIBASSUAN_API=1
31 NEED_LIBASSUAN_VERSION=1.0.4
32
33
34 SVN_REVISION=svn_revision
35 PACKAGE=$PACKAGE_NAME
36 PACKAGE_GT=${PACKAGE_NAME}
37 VERSION=$PACKAGE_VERSION
38
39 AC_CONFIG_SRCDIR(src/gpgol.def)
40 AM_CONFIG_HEADER(config.h)
41 AC_CANONICAL_TARGET()
42 AM_INIT_AUTOMAKE
43
44 AC_GNU_SOURCE
45
46 have_gpg_error=no
47 have_libassuan=no
48
49 AC_SUBST(PACKAGE)
50 AC_SUBST(PACKAGE_GT)
51 AC_SUBST(VERSION)
52 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
53 AC_DEFINE_UNQUOTED(PACKAGE_GT, "$PACKAGE_GT",
54                                 [Name of this package for gettext])
55 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
56 AC_DEFINE_UNQUOTED(PACKAGE_BUGREPORT, "$PACKAGE_BUGREPORT",
57                                         [Bug report address])
58 AC_DEFINE_UNQUOTED(NEED_GPGME_VERSION, "$NEED_GPGME_VERSION",
59                                        [Required version of GPGME])
60 AC_DEFINE_UNQUOTED(SVN_REVISION, ${SVN_REVISION}, [Current SVN revision])
61
62
63 BUILD_TIMESTAMP=`date --iso-8601=minutes`
64 AC_SUBST(BUILD_TIMESTAMP)
65 changequote(,)dnl
66 BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./;s/\./,/g'`
67 changequote([,])dnl
68 BUILD_FILEVERSION="${BUILD_FILEVERSION}${SVN_REVISION}"
69 AC_SUBST(BUILD_FILEVERSION)
70
71
72 AH_BOTTOM([
73 /* Some global constants. */
74
75 /* Force using of NLS for W32 even if no libintl has been found.  This is 
76    okay because we have our own gettext implementation for W32.  */
77 #if defined(HAVE_W32_SYSTEM) && !defined(ENABLE_NLS)
78 #define ENABLE_NLS 1
79 #endif
80 ])
81
82 AM_MAINTAINER_MODE
83
84 # Checks for programs.
85 AC_PROG_MAKE_SET
86 AM_SANITY_CHECK
87 missing_dir=`cd $ac_aux_dir && pwd`
88 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
89 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
90 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
91 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
92 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
93 AC_PROG_AWK
94 AC_PROG_CC
95 AC_PROG_CPP
96 AC_PROG_CXX
97 AC_PROG_INSTALL
98 AC_PROG_LN_S
99 AC_PROG_MAKE_SET
100 AC_PROG_RANLIB
101 AC_CHECK_TOOL(AR, ar, :)
102 AC_CHECK_TOOL(DLLTOOL, dlltool, :)
103 AC_CHECK_TOOL(WINDRES, windres, :)
104
105
106 have_dosish_system=no
107 have_w32_system=no
108 case "${host}" in
109     *-mingw32*)
110         # special stuff for Windoze NT
111         ac_cv_have_dev_random=no
112         AC_DEFINE(USE_ONLY_8DOT3,1,
113                   [set this to limit filenames to the 8.3 format])
114         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
115                   [defined if we must run on a stupid file system])
116         have_dosish_system=yes
117         have_w32_system=yes
118         ;;
119     *)
120     AC_MSG_ERROR([[
121 ***
122 *** This software my only be build for W32 systems.  Use
123 ***     ./autogen.sh --build-w32
124 *** to prepare it for such a build.
125 ***]])
126        ;;
127 esac
128
129 if test "$have_dosish_system" = yes; then
130    AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
131              [Defined if we run on some of the PCDOS like systems
132               (DOS, Windoze. OS/2) with special properties like
133               no file modes])
134 fi
135 AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
136
137 if test "$have_w32_system" = yes; then
138    AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
139 fi
140 AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
141
142
143
144 #
145 # Checks for libraries.
146 #
147
148
149 AM_PATH_GPGME("$NEED_GPGME_API:$NEED_GPGME_VERSION",
150                have_gpgme=yes,have_gpgme=no)
151 AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION",
152                   have_gpg_error=yes,have_gpg_error=no)
153 AC_DEFINE(GPG_ERR_SOURCE_DEFAULT, GPG_ERR_SOURCE_USER_2,
154           [The default error source for GpgOL.])
155 AM_PATH_LIBASSUAN("$NEED_LIBASSUAN_API:$NEED_LIBASSUAN_VERSION",
156                   have_libassuan=yes,have_libassuan=no)
157
158 AH_BOTTOM([
159 /* We don't want the old assuan codes anymore. */
160 #define _ASSUAN_ONLY_GPG_ERRORS 1
161 ])
162
163
164
165 # Note, that autogen.sh greps for the next line.
166 AM_GNU_GETTEXT_VERSION(0.12.1)
167 AM_GNU_GETTEXT([external])
168 # We always want NLs, despite what the above macro figures out.
169 USE_NLS=yes
170
171 # Checks for header files.
172 AC_HEADER_STDC
173 AC_CHECK_HEADERS(string.h unistd.h langinfo.h termio.h locale.h)
174
175 AC_CHECK_FUNCS(stpcpy)
176
177 # Checks for typedefs, structures, and compiler characteristics.
178 AC_C_CONST
179 AC_C_INLINE
180 AC_TYPE_SIZE_T
181 AC_TYPE_SIGNAL
182
183 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
184
185 # Add some extra libs here so that previous tests don't fail for
186 # mysterious reasons - the final link step should bail out.
187 if test "$have_w32_system" = yes; then
188    W32LIBS="-lwsock32"
189 fi
190
191 if test "$GCC" = yes; then
192     CFLAGS="$CFLAGS -Wall -mms-bitfields"
193     CXXFLAGS="$CXXFLAGS -Wall -mms-bitfields"
194     if test "$USE_MAINTAINER_MODE" = "yes"; then
195         CFLAGS="$CFLAGS -Wcast-align -Wshadow -Wstrict-prototypes"
196         CFLAGS="$CFLAGS -Wno-format-y2k -Wformat-security"
197         CXXFLAGS="$CXXFLAGS -Wcast-align -Wshadow"
198         CXXFLAGS="$CXXFLAGS -Wno-format-y2k -Wformat-security"
199     fi
200 fi
201
202 AC_SUBST(W32LIBS)
203
204
205
206 #
207 # Print errors here so that they are visible all
208 # together and the user can acquire them all together.
209 #
210 die=no
211 if test "$have_gpg_error" = "no"; then
212    die=yes
213    AC_MSG_NOTICE([[
214 ***  
215 *** You need libgpg-error to build this program.
216 **  This library is for example available at
217 ***   ftp://ftp.gnupg.org/pub/gcrypt/libgpg-error
218 *** (at least version $NEED_GPG_ERROR_VERSION is required.)
219 ***]])
220 fi
221 if test "$have_gpgme" = "no"; then
222    die=yes
223    AC_MSG_NOTICE([[
224 ***  
225 *** You need gpgme to build this program.
226 **  This library is for example available at
227 ***   ftp://ftp.gnupg.org/gcrypt/gpgme/
228 *** (at least version $NEED_GPGME_VERSION is required.)
229 ***]])
230 fi
231 if test "$have_libassuan" = "no"; then
232    die=yes
233    AC_MSG_NOTICE([[
234 ***
235 *** You need libassuan to build this program.
236 *** This library is for example available at
237 ***   ftp://ftp.gnupg.org/pub/gcrypt/libassuan/
238 *** (at least version $NEED_LIBASSUAN_VERSION is required).
239 ***]])
240 fi
241 if test "$die" = "yes"; then
242     AC_MSG_ERROR([[
243 ***
244 *** Required libraries not found. Please consult the above messages
245 *** and install them before running configure again.
246 ***]])
247 fi
248
249
250 AC_CONFIG_FILES([ Makefile
251 src/Makefile
252 src/versioninfo.rc        
253 doc/Makefile
254 po/Makefile.in
255 m4/Makefile
256 ])
257 AC_OUTPUT