No -Wno-pointer-sign for C++
[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.0.1])
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=1
32 NEED_LIBASSUAN_VERSION=1.0.4
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 AH_BOTTOM([
160 /* We don't want the old assuan codes anymore. */
161 #define _ASSUAN_ONLY_GPG_ERRORS 1
162 ])
163
164
165
166 # Note, that autogen.sh greps for the next line.
167 AM_GNU_GETTEXT_VERSION(0.12.1)
168 AM_GNU_GETTEXT([external])
169 # We always want NLs, despite what the above macro figures out.
170 USE_NLS=yes
171
172 # Checks for header files.
173 AC_HEADER_STDC
174 AC_CHECK_HEADERS(string.h unistd.h langinfo.h termio.h locale.h)
175
176 AC_CHECK_FUNCS(stpcpy)
177
178 # Checks for typedefs, structures, and compiler characteristics.
179 AC_C_CONST
180 AC_C_INLINE
181 AC_TYPE_SIZE_T
182 AC_TYPE_SIGNAL
183
184 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
185
186 # Add some extra libs here so that previous tests don't fail for
187 # mysterious reasons - the final link step should bail out.
188 if test "$have_w32_system" = yes; then
189    W32LIBS="-lwsock32"
190 fi
191
192 if test "$GCC" = yes; then
193     CFLAGS="$CFLAGS -Wall -mms-bitfields"
194     CXXFLAGS="$CXXFLAGS -Wall -mms-bitfields"
195     if test "$USE_MAINTAINER_MODE" = "yes"; then
196         CFLAGS="$CFLAGS -Wcast-align -Wshadow -Wstrict-prototypes"
197         CFLAGS="$CFLAGS -Wno-format-y2k -Wformat-security"
198         CFLAGS="$CFLAGS -W -Wno-sign-compare"
199         CXXFLAGS="$CXXFLAGS -Wcast-align -Wshadow"
200         CXXFLAGS="$CXXFLAGS -Wno-format-y2k -Wformat-security"
201         CXXFLAGS="$CXXFLAGS -W -Wno-sign-compare"
202         AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers])
203         _gcc_cflags_save=$CFLAGS
204         CFLAGS="-Wno-missing-field-initializers"
205         AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_mfi=yes,_gcc_mfi=no)
206         AC_MSG_RESULT($_gcc_mfi)
207         CFLAGS=$_gcc_cflags_save;
208         if test x"$_gcc_mfi" = xyes ; then
209           CFLAGS="$CFLAGS -Wno-missing-field-initializers"
210           CXXFLAGS="$CXXFLAGS -Wno-missing-field-initializers"
211         fi
212     fi
213
214     AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign])
215     _gcc_cflags_save=$CFLAGS
216     CFLAGS="-Wno-pointer-sign"
217     AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_psign=yes,_gcc_psign=no)
218     AC_MSG_RESULT($_gcc_psign)
219     CFLAGS=$_gcc_cflags_save;
220     if test x"$_gcc_psign" = xyes ; then
221        CFLAGS="$CFLAGS -Wno-pointer-sign"
222     fi
223
224
225 fi
226
227 AC_SUBST(W32LIBS)
228
229
230
231 #
232 # Print errors here so that they are visible all
233 # together and the user can acquire them all together.
234 #
235 die=no
236 if test "$have_gpg_error" = "no"; then
237    die=yes
238    AC_MSG_NOTICE([[
239 ***  
240 *** You need libgpg-error to build this program.
241 **  This library is for example available at
242 ***   ftp://ftp.gnupg.org/pub/gcrypt/libgpg-error
243 *** (at least version $NEED_GPG_ERROR_VERSION is required.)
244 ***]])
245 fi
246 if test "$have_gpgme" = "no"; then
247    die=yes
248    AC_MSG_NOTICE([[
249 ***  
250 *** You need gpgme to build this program.
251 **  This library is for example available at
252 ***   ftp://ftp.gnupg.org/gcrypt/gpgme/
253 *** (at least version $NEED_GPGME_VERSION is required.)
254 ***]])
255 fi
256 if test "$have_libassuan" = "no"; then
257    die=yes
258    AC_MSG_NOTICE([[
259 ***
260 *** You need libassuan to build this program.
261 *** This library is for example available at
262 ***   ftp://ftp.gnupg.org/pub/gcrypt/libassuan/
263 *** (at least version $NEED_LIBASSUAN_VERSION is required).
264 ***]])
265 fi
266 if test "$die" = "yes"; then
267     AC_MSG_ERROR([[
268 ***
269 *** Required libraries not found. Please consult the above messages
270 *** and install them before running configure again.
271 ***]])
272 fi
273
274
275 AC_CONFIG_FILES([ Makefile
276 src/Makefile
277 src/versioninfo.rc        
278 forms/Makefile
279 doc/Makefile
280 po/Makefile.in
281 m4/Makefile
282 ])
283 AC_OUTPUT