c6ca96fb8a4aa49d2671cd3cbbcbe3e293ffcd9c
[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_REVISION($Revision$)
23
24 AC_PREREQ(2.52)
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.6.6-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 AC_PROG_CC
42 AC_PROG_CPP
43 AC_PROG_INSTALL
44 AC_PROG_RANLIB
45
46 dnl Checks for compiler features.
47 if test "$GCC" = yes; then
48     CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
49     CPPFLAGS="$CPPFLAGS -Wall"
50 fi
51
52 dnl Checks for library functions.
53 AC_CHECK_FUNCS(seteuid stpcpy)
54 GNUPG_CHECK_MLOCK
55
56 dnl Checks for libassuan.
57 AC_CHECK_FUNCS(fopencookie,,[
58     AC_MSG_ERROR([[
59 ***
60 *** fopencookie(3) is needed to build this package.
61 *** We will provide an replacement in a later release.
62 ***]])])
63
64 dnl Checks for libsecmem.
65 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
66 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
67
68 AC_PATH_PROG(SETCAP, setcap, :, "$PATH:/sbin:/usr/sbin")
69 AC_CHECK_LIB(cap, cap_set_proc, [
70   AC_DEFINE(USE_CAPABILITIES,1,[The capabilities support library is installed])
71   LIBCAP=-lcap
72 ])
73 AC_SUBST(LIBCAP)
74
75 dnl
76 dnl Check for curses pinentry program.
77 dnl
78 AC_ARG_ENABLE(pinentry-curses,
79             AC_HELP_STRING([--enable-pinentry-curses], [build curses pinentry]),
80             pinentry_curses=$enableval, pinentry_curses=maybe)
81 AC_ARG_ENABLE(fallback-curses,
82             AC_HELP_STRING([--enable-fallback-curses], [include curses fallback]),
83             fallback_curses=$enableval, fallback_curses=maybe)
84
85 dnl
86 dnl Checks for curses libraries.  Deal correctly with $pinentry_curses = maybe
87 dnl and $fallback_curses = maybe.
88 dnl
89 if test "$pinentry_curses" != "no" -o "$fallback_curses" != "no"; then
90   IU_LIB_CURSES
91 fi
92 if test "$LIBCURSES"; then
93   if test "$pinentry_curses" != "no"; then
94     pinentry_curses=yes
95   fi
96   if test "$fallback_curses" != "no"; then
97     fallback_curses=yes
98     AC_DEFINE(FALLBACK_CURSES, 1,
99               [The GUI pinentries should fall back to curses if X is not available.])
100   fi
101 else
102   if test "$pinentry_curses" = "yes" -o "$fallback_curses" = "yes"; then
103     AC_MSG_ERROR([[
104 *** The curses library is required. The latest version of
105 *** ncurses is always available from ftp://ftp.gnu.org/gnu/ncurses/.
106 ]])
107   fi
108   pinentry_curses=no
109   fallback_curses=no
110 fi
111 AM_CONDITIONAL(BUILD_LIBPINENTRY_CURSES, test "$pinentry_curses" = "yes" -o "$fallback_curses" = "yes")
112 AM_CONDITIONAL(BUILD_PINENTRY_CURSES, test "$pinentry_curses" = "yes")
113 AM_CONDITIONAL(FALLBACK_CURSES, test "$fallback_curses" = "yes")
114
115 if test "$pinentry_curses" = "yes" -o "$fallback_curses" = "yes"; then
116 dnl Additional checks for Curses pinentry.
117 AM_ICONV
118 fi
119
120 dnl
121 dnl Check for GTK+ pinentry program.
122 dnl
123 AC_ARG_ENABLE(pinentry-gtk,
124             AC_HELP_STRING([--enable-pinentry-gtk], [build GTK+ pinentry]),
125             pinentry_gtk=$enableval, pinentry_gtk=maybe)
126
127 dnl
128 dnl Checks for GTK+ libraries.  Deal correctly with $pinentry_gtk = maybe.
129 dnl
130 if test "$pinentry_gtk" != "no"; then
131 AM_PATH_GLIB(1.2.0,,
132 if test "$pinentry_gtk" = "yes"; then
133     AC_MSG_ERROR([[
134 *** GLIB 1.2.0 or newer is required. The latest version of GLIB
135 *** is always available from ftp://ftp.gtk.org/.
136 ]])
137 else
138     pinentry_gtk=no
139 fi)
140 fi
141
142 if test "$pinentry_gtk" != "no"; then
143 AM_PATH_GTK(1.2.0,
144     AC_DEFINE(HAVE_GTK, 1, [Defined if GTK is available]),
145 if test "$pinentry_gtk" = "yes"; then
146     AC_MSG_ERROR([[
147 *** GTK+ 1.2.0 or newer is required. The latest version of GTK+
148 *** is always available form ftp://ftp.gtk.org/.
149 ]])
150 else
151     pinentry_gtk=no
152 fi)
153 fi
154
155 dnl If we have come so far, GTK+ pinentry can be build.
156 if test "$pinentry_gtk" != "no"; then
157     pinentry_gtk=yes
158 fi
159 AM_CONDITIONAL(BUILD_PINENTRY_GTK, test "$pinentry_gtk" = "yes")
160
161 dnl if test "$pinentry_gtk" = "yes"; then
162 dnl Additional checks for GTK+ pinentry.
163 dnl End of additional checks for GTK+ pinentry.
164 dnl fi
165
166
167 dnl
168 dnl Check for Qt pinentry program.
169 dnl
170 AC_ARG_ENABLE(pinentry-qt,
171             AC_HELP_STRING([--enable-pinentry-qt], [build Qt pinentry]),
172             pinentry_qt=$enableval, pinentry_qt=maybe)
173 dnl
174 dnl Checks for Qt libraries.  Deal correctly with $pinentry_qt = maybe.
175 dnl
176 if test "$pinentry_qt" != "no"; then
177 QT_CHECK_COMPILERS
178 QT_PATH
179 if test $have_qt = "no"; then
180         if test $pinentry_qt = "yes"; then
181           AC_MSG_ERROR([Qt ($qt_minversion) $ac_qt_notfound not found. Please check your installation!
182           For more details about this problem, look at the end of config.log.$missing_qt_mt])
183         else
184           pinentry_qt="no"        
185         fi
186 fi
187 if test $have_moc = "no"; then
188         if test $pinentry_qt = "yes"; then
189         AC_MSG_ERROR([No Qt meta object compiler (moc) found!
190         Please check whether you installed Qt correctly.
191         You need to have a running moc binary.
192         configure tried to run $ac_cv_path_moc and the test didn't
193         succeed. If configure shouldn't have tried this one, set
194         the environment variable MOC to the right one before running
195         configure.
196         ])
197         else
198           pinentry_qt="no"        
199         fi
200 fi
201 fi
202
203 dnl If we have come so far, Qt pinentry can probably be build.
204 if test "$pinentry_qt" != "no"; then
205     pinentry_qt=yes
206 fi
207 AM_CONDITIONAL(BUILD_PINENTRY_QT, test "$pinentry_qt" = "yes")
208
209 dnl if test "$pinentry_qt" = "yes"; then
210 dnl dnl Additional checks for Qt pinentry.
211 dnl dnl End of checks for Qt pinentry.
212 dnl fi
213
214
215 AC_CONFIG_FILES([
216 assuan/Makefile
217 secmem/Makefile
218 pinentry/Makefile
219 curses/Makefile
220 gtk/Makefile
221 qt/Makefile
222 Makefile
223 ])
224
225 AC_OUTPUT
226
227 AC_MSG_NOTICE([
228         Pinentry v${VERSION} has been configured as follows:
229
230         Curses Pinentry: $pinentry_curses
231         GTK+ Pinentry: $pinentry_gtk
232         Qt Pinentry: $pinentry_qt
233
234         Fallback to Curses: $fallback_curses
235 ])