2010-04-21 Marcus Brinkmann <marcus@g10code.de>
[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], [1.1.2])
20 m4_define([my_issvn], [yes])
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], 
25         [my_version[]m4_if(my_issvn,[yes],[-svn[]svn_revision])],
26         [bug-gpgol@g10code.com])
27
28 NEED_GPG_ERROR_VERSION=1.4
29 NEED_GPGME_API=1
30 NEED_GPGME_VERSION=1.1.0
31 NEED_LIBASSUAN_API=2
32 NEED_LIBASSUAN_VERSION=2.0.0
33
34
35 SVN_REVISION=svn_revision
36 PACKAGE=$PACKAGE_NAME
37 PACKAGE_GT=${PACKAGE_NAME}
38 VERSION=$PACKAGE_VERSION
39
40 AC_CONFIG_SRCDIR(src/gpgol.def)
41 AM_CONFIG_HEADER(config.h)
42 AC_CANONICAL_TARGET()
43 AM_INIT_AUTOMAKE
44
45 AC_GNU_SOURCE
46
47 have_gpg_error=no
48 have_libassuan=no
49
50 AC_SUBST(PACKAGE)
51 AC_SUBST(PACKAGE_GT)
52 AC_SUBST(VERSION)
53 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
54 AC_DEFINE_UNQUOTED(PACKAGE_GT, "$PACKAGE_GT",
55                                 [Name of this package for gettext])
56 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
57 AC_DEFINE_UNQUOTED(PACKAGE_BUGREPORT, "$PACKAGE_BUGREPORT",
58                                         [Bug report address])
59 AC_DEFINE_UNQUOTED(NEED_GPGME_VERSION, "$NEED_GPGME_VERSION",
60                                        [Required version of GPGME])
61 AC_DEFINE_UNQUOTED(SVN_REVISION, ${SVN_REVISION}, [Current SVN revision])
62
63
64 BUILD_TIMESTAMP=`date --iso-8601=minutes`
65 AC_SUBST(BUILD_TIMESTAMP)
66 changequote(,)dnl
67 BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./;s/\./,/g'`
68 changequote([,])dnl
69 BUILD_FILEVERSION="${BUILD_FILEVERSION}${SVN_REVISION}"
70 AC_SUBST(BUILD_FILEVERSION)
71
72
73 AH_BOTTOM([
74 /* Some global constants. */
75
76 /* Force using of NLS for W32 even if no libintl has been found.  This is 
77    okay because we have our own gettext implementation for W32.  */
78 #if defined(HAVE_W32_SYSTEM) && !defined(ENABLE_NLS)
79 #define ENABLE_NLS 1
80 #endif
81 ])
82
83 AM_MAINTAINER_MODE
84
85 # Checks for programs.
86 AC_PROG_MAKE_SET
87 AM_SANITY_CHECK
88 missing_dir=`cd $ac_aux_dir && pwd`
89 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
90 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
91 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
92 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
93 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
94 AC_PROG_AWK
95 AC_PROG_CC
96 AC_PROG_CPP
97 AC_PROG_CXX
98 AC_PROG_INSTALL
99 AC_PROG_LN_S
100 AC_PROG_MAKE_SET
101 AC_PROG_RANLIB
102 AC_CHECK_TOOL(AR, ar, :)
103 AC_CHECK_TOOL(DLLTOOL, dlltool, :)
104 AC_CHECK_TOOL(WINDRES, windres, :)
105
106
107 have_dosish_system=no
108 have_w32_system=no
109 case "${host}" in
110     *-mingw32*)
111         # special stuff for Windoze NT
112         ac_cv_have_dev_random=no
113         AC_DEFINE(USE_ONLY_8DOT3,1,
114                   [set this to limit filenames to the 8.3 format])
115         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
116                   [defined if we must run on a stupid file system])
117         have_dosish_system=yes
118         have_w32_system=yes
119         ;;
120     *)
121     AC_MSG_ERROR([[
122 ***
123 *** This software my only be build for W32 systems.  Use
124 ***     ./autogen.sh --build-w32
125 *** to prepare it for such a build.
126 ***]])
127        ;;
128 esac
129
130 if test "$have_dosish_system" = yes; then
131    AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
132              [Defined if we run on some of the PCDOS like systems
133               (DOS, Windoze. OS/2) with special properties like
134               no file modes])
135 fi
136 AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
137
138 if test "$have_w32_system" = yes; then
139    AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
140 fi
141 AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
142
143
144
145 #
146 # Checks for libraries.
147 #
148
149
150 AM_PATH_GPGME("$NEED_GPGME_API:$NEED_GPGME_VERSION",
151                have_gpgme=yes,have_gpgme=no)
152 AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION",
153                   have_gpg_error=yes,have_gpg_error=no)
154 AC_DEFINE(GPG_ERR_SOURCE_DEFAULT, GPG_ERR_SOURCE_USER_2,
155           [The default error source for GpgOL.])
156 AM_PATH_LIBASSUAN("$NEED_LIBASSUAN_API:$NEED_LIBASSUAN_VERSION",
157                   have_libassuan=yes,have_libassuan=no)
158
159
160 # Note, that autogen.sh greps for the next line.
161 AM_GNU_GETTEXT_VERSION(0.12.1)
162 AM_GNU_GETTEXT([external])
163 # We always want NLs, despite what the above macro figures out.
164 USE_NLS=yes
165
166 # Checks for header files.
167 AC_HEADER_STDC
168 AC_CHECK_HEADERS(string.h unistd.h langinfo.h termio.h locale.h)
169
170 AC_CHECK_FUNCS(stpcpy)
171
172 # Checks for typedefs, structures, and compiler characteristics.
173 AC_C_CONST
174 AC_C_INLINE
175 AC_TYPE_SIZE_T
176 AC_TYPE_SIGNAL
177
178 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
179
180 # Add some extra libs here so that previous tests don't fail for
181 # mysterious reasons - the final link step should bail out.
182 if test "$have_w32_system" = yes; then
183    W32LIBS="-lwsock32"
184 fi
185
186 if test "$GCC" = yes; then
187     CFLAGS="$CFLAGS -Wall -mms-bitfields -fno-strict-aliasing"
188     CXXFLAGS="$CXXFLAGS -Wall -mms-bitfields -fno-strict-aliasing"
189     if test "$USE_MAINTAINER_MODE" = "yes"; then
190         CFLAGS="$CFLAGS -Wcast-align -Wshadow -Wstrict-prototypes"
191         CFLAGS="$CFLAGS -Wno-format-y2k -Wformat-security"
192         CFLAGS="$CFLAGS -W -Wno-sign-compare"
193         CXXFLAGS="$CXXFLAGS -Wcast-align -Wshadow"
194         CXXFLAGS="$CXXFLAGS -Wno-format-y2k -Wformat-security"
195         CXXFLAGS="$CXXFLAGS -W -Wno-sign-compare"
196         AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers])
197         _gcc_cflags_save=$CFLAGS
198         CFLAGS="-Wno-missing-field-initializers"
199         AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_mfi=yes,_gcc_mfi=no)
200         AC_MSG_RESULT($_gcc_mfi)
201         CFLAGS=$_gcc_cflags_save;
202         if test x"$_gcc_mfi" = xyes ; then
203           CFLAGS="$CFLAGS -Wno-missing-field-initializers"
204           CXXFLAGS="$CXXFLAGS -Wno-missing-field-initializers"
205         fi
206     fi
207
208     AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign])
209     _gcc_cflags_save=$CFLAGS
210     CFLAGS="-Wno-pointer-sign"
211     AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_psign=yes,_gcc_psign=no)
212     AC_MSG_RESULT($_gcc_psign)
213     CFLAGS=$_gcc_cflags_save;
214     if test x"$_gcc_psign" = xyes ; then
215        CFLAGS="$CFLAGS -Wno-pointer-sign"
216     fi
217
218
219 fi
220
221 AC_SUBST(W32LIBS)
222
223
224
225 #
226 # Print errors here so that they are visible all
227 # together and the user can acquire them all together.
228 #
229 die=no
230 if test "$have_gpg_error" = "no"; then
231    die=yes
232    AC_MSG_NOTICE([[
233 ***  
234 *** You need libgpg-error to build this program.
235 **  This library is for example available at
236 ***   ftp://ftp.gnupg.org/pub/gcrypt/libgpg-error
237 *** (at least version $NEED_GPG_ERROR_VERSION is required.)
238 ***]])
239 fi
240 if test "$have_gpgme" = "no"; then
241    die=yes
242    AC_MSG_NOTICE([[
243 ***  
244 *** You need gpgme to build this program.
245 **  This library is for example available at
246 ***   ftp://ftp.gnupg.org/gcrypt/gpgme/
247 *** (at least version $NEED_GPGME_VERSION is required.)
248 ***]])
249 fi
250 if test "$have_libassuan" = "no"; then
251    die=yes
252    AC_MSG_NOTICE([[
253 ***
254 *** You need libassuan to build this program.
255 *** This library is for example available at
256 ***   ftp://ftp.gnupg.org/pub/gcrypt/libassuan/
257 *** (at least version $NEED_LIBASSUAN_VERSION is required).
258 ***]])
259 fi
260 if test "$die" = "yes"; then
261     AC_MSG_ERROR([[
262 ***
263 *** Required libraries not found. Please consult the above messages
264 *** and install them before running configure again.
265 ***]])
266 fi
267
268
269 AC_CONFIG_FILES([ Makefile
270 src/Makefile
271 src/versioninfo.rc        
272 forms/Makefile
273 doc/Makefile
274 po/Makefile.in
275 m4/Makefile
276 ])
277 AC_OUTPUT