Early check for a c++ compiler.
[pinentry.git] / configure.ac
1 # configure.ac
2 # Copyright (C) 1999 Robert Bihlmeyer <robbe@orcus.priv.at>
3 # Copyright (C) 2001, 2002 g10 Code GmbH
4
5 # This file is part of PINENTRY.
6
7 # PINENTRY is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version.
11
12 # PINENTRY is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
20  
21 # (Process this file with autoconf to produce a configure script.)
22 AC_PREREQ(2.57)
23 min_automake_version="1.7.6"
24
25 # Remember to remove the "-cvs" suffix *before* a release and to bump the
26 # version number immediately *after* a release and to re-append the suffix.
27 AC_INIT(pinentry, 0.7.1-cvs, [gpa-dev@gnupg.org])
28 AM_CONFIG_HEADER(config.h)
29 AC_CONFIG_SRCDIR(pinentry/pinentry.h)
30 AM_INIT_AUTOMAKE($PACKAGE_NAME, $PACKAGE_VERSION)
31 AH_TOP([
32 /* We need this, because some autoconf tests rely on this (e.g. stpcpy)
33    and it should be used for new programs anyway */
34 #define _GNU_SOURCE  1
35 ])
36 AM_MAINTAINER_MODE
37
38 AC_CANONICAL_HOST
39
40 dnl Checks for programs.
41 missing_dir=`cd $ac_aux_dir && pwd`
42 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
43 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
44 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
45 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
46 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
47 AC_PROG_CC
48 AC_PROG_CPP
49 AC_PROG_INSTALL
50 AC_PROG_RANLIB
51 # We need to check for cplusplus here becuase we may not do the test
52 # for Qt and autoconf does does not allow that.
53 AC_PROG_CXX
54
55 dnl Checks for compiler features.
56 if test "$GCC" = yes; then
57     CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
58     CPPFLAGS="$CPPFLAGS -Wall"
59 fi
60
61 dnl Checks for library functions.
62 AC_CHECK_FUNCS(seteuid stpcpy mmap)
63 GNUPG_CHECK_MLOCK
64
65 dnl Checks for libassuan.
66 AC_CHECK_FUNCS(fopencookie,,[
67     AC_MSG_ERROR([[
68 ***
69 *** fopencookie(3) is needed to build this package.
70 *** We will provide an replacement in a later release.
71 ***]])])
72
73 dnl Checks for libsecmem.
74 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
75 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
76
77 AC_PATH_PROG(SETCAP, setcap, :, "$PATH:/sbin:/usr/sbin")
78 AC_CHECK_LIB(cap, cap_set_proc, [
79   AC_DEFINE(USE_CAPABILITIES,1,[The capabilities support library is installed])
80   LIBCAP=-lcap
81 ])
82 AC_SUBST(LIBCAP)
83
84 dnl
85 dnl Check for curses pinentry program.
86 dnl
87 AC_ARG_ENABLE(pinentry-curses,
88             AC_HELP_STRING([--enable-pinentry-curses], [build curses pinentry]),
89             pinentry_curses=$enableval, pinentry_curses=maybe)
90 AC_ARG_ENABLE(fallback-curses,
91             AC_HELP_STRING([--enable-fallback-curses], [include curses fallback]),
92             fallback_curses=$enableval, fallback_curses=maybe)
93
94 dnl
95 dnl Checks for curses libraries.  Deal correctly with $pinentry_curses = maybe
96 dnl and $fallback_curses = maybe.
97 dnl
98 if test "$pinentry_curses" != "no" -o "$fallback_curses" != "no"; then
99   IU_LIB_CURSES
100 fi
101 if test "$LIBCURSES"; then
102   if test "$pinentry_curses" != "no"; then
103     pinentry_curses=yes
104   fi
105   if test "$fallback_curses" != "no"; then
106     fallback_curses=yes
107     AC_DEFINE(FALLBACK_CURSES, 1,
108               [The GUI pinentries should fall back to curses if X is not available.])
109   fi
110 else
111   if test "$pinentry_curses" = "yes" -o "$fallback_curses" = "yes"; then
112     AC_MSG_ERROR([[
113 *** The curses library is required. The latest version of
114 *** ncurses is always available from ftp://ftp.gnu.org/gnu/ncurses/.
115 ]])
116   fi
117   pinentry_curses=no
118   fallback_curses=no
119 fi
120 AM_CONDITIONAL(BUILD_LIBPINENTRY_CURSES, test "$pinentry_curses" = "yes" -o "$fallback_curses" = "yes")
121 AM_CONDITIONAL(BUILD_PINENTRY_CURSES, test "$pinentry_curses" = "yes")
122 AM_CONDITIONAL(FALLBACK_CURSES, test "$fallback_curses" = "yes")
123
124 if test "$pinentry_curses" = "yes" -o "$fallback_curses" = "yes"; then
125 dnl Additional checks for Curses pinentry.
126 AM_ICONV
127 fi
128
129 dnl
130 dnl Check for GTK+ pinentry program.
131 dnl
132 AC_ARG_ENABLE(pinentry-gtk,
133             AC_HELP_STRING([--enable-pinentry-gtk], [build GTK+ pinentry]),
134             pinentry_gtk=$enableval, pinentry_gtk=maybe)
135
136 dnl
137 dnl Checks for GTK+ libraries.  Deal correctly with $pinentry_gtk = maybe.
138 dnl
139 if test "$pinentry_gtk" != "no"; then
140 AM_PATH_GLIB(1.2.0,,
141 if test "$pinentry_gtk" = "yes"; then
142     AC_MSG_ERROR([[
143 *** GLIB 1.2.0 or newer is required. The latest version of GLIB
144 *** is always available from ftp://ftp.gtk.org/.
145 ]])
146 else
147     pinentry_gtk=no
148 fi)
149 fi
150
151 if test "$pinentry_gtk" != "no"; then
152 AM_PATH_GTK(1.2.0,
153     AC_DEFINE(HAVE_GTK, 1, [Defined if GTK is available]),
154 if test "$pinentry_gtk" = "yes"; then
155     AC_MSG_ERROR([[
156 *** GTK+ 1.2.0 or newer is required. The latest version of GTK+
157 *** is always available form ftp://ftp.gtk.org/.
158 ]])
159 else
160     pinentry_gtk=no
161 fi)
162 fi
163
164 dnl If we have come so far, GTK+ pinentry can be build.
165 if test "$pinentry_gtk" != "no"; then
166     pinentry_gtk=yes
167 fi
168 AM_CONDITIONAL(BUILD_PINENTRY_GTK, test "$pinentry_gtk" = "yes")
169
170 dnl if test "$pinentry_gtk" = "yes"; then
171 dnl Additional checks for GTK+ pinentry.
172 dnl End of additional checks for GTK+ pinentry.
173 dnl fi
174
175
176 dnl
177 dnl Check for Qt pinentry program.
178 dnl
179 AC_ARG_ENABLE(pinentry-qt,
180             AC_HELP_STRING([--enable-pinentry-qt], [build Qt pinentry]),
181             pinentry_qt=$enableval, pinentry_qt=maybe)
182 dnl
183 dnl Checks for Qt libraries.  Deal correctly with $pinentry_qt = maybe.
184 dnl
185 if test "$pinentry_qt" != "no"; then
186 QT_CHECK_COMPILERS
187 QT_PATH
188 if test $have_qt = "no"; then
189         if test $pinentry_qt = "yes"; then
190           AC_MSG_ERROR([Qt ($qt_minversion) $ac_qt_notfound not found. Please check your installation!
191           For more details about this problem, look at the end of config.log.$missing_qt_mt])
192         else
193           pinentry_qt="no"        
194         fi
195 fi
196 if test $have_moc = "no"; then
197         if test $pinentry_qt = "yes"; then
198         AC_MSG_ERROR([No Qt meta object compiler (moc) found!
199         Please check whether you installed Qt correctly.
200         You need to have a running moc binary.
201         configure tried to run $ac_cv_path_moc and the test didn't
202         succeed. If configure shouldn't have tried this one, set
203         the environment variable MOC to the right one before running
204         configure.
205         ])
206         else
207           pinentry_qt="no"        
208         fi
209 fi
210 fi
211
212 dnl If we have come so far, Qt pinentry can probably be build.
213 if test "$pinentry_qt" != "no"; then
214     pinentry_qt=yes
215 fi
216 AM_CONDITIONAL(BUILD_PINENTRY_QT, test "$pinentry_qt" = "yes")
217
218 dnl if test "$pinentry_qt" = "yes"; then
219 dnl dnl Additional checks for Qt pinentry.
220 dnl dnl End of checks for Qt pinentry.
221 dnl fi
222
223
224 AC_CONFIG_FILES([
225 assuan/Makefile
226 secmem/Makefile
227 pinentry/Makefile
228 curses/Makefile
229 gtk/Makefile
230 qt/Makefile
231 doc/Makefile
232 Makefile
233 ])
234
235 AC_OUTPUT
236
237 AC_MSG_NOTICE([
238         Pinentry v${VERSION} has been configured as follows:
239
240         Curses Pinentry: $pinentry_curses
241         GTK+ Pinentry: $pinentry_gtk
242         Qt Pinentry: $pinentry_qt
243
244         Fallback to Curses: $fallback_curses
245 ])