1AC_INIT([libgnome-keyring], [3.12.0])
2AC_CONFIG_SRCDIR([library/gnome-keyring.h])
3AM_INIT_AUTOMAKE([tar-ustar])
4AC_CONFIG_MACRO_DIR([build/m4])
5
6AC_CONFIG_HEADERS(config.h)
7m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
8
9AM_SANITY_CHECK
10AM_MAINTAINER_MODE([enable])
11
12AC_GNU_SOURCE
13AC_ISC_POSIX
14AC_PROG_CC
15AM_PROG_CC_C_O
16AC_PROG_INSTALL
17AC_PROG_LN_S
18AC_PROG_MAKE_SET
19AM_DISABLE_STATIC
20AM_PROG_LIBTOOL
21IT_PROG_INTLTOOL([0.35.0])
22AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
23
24LIB_GNOME_KEYRING_LT_VERSION=2:0:2
25AC_SUBST(LIB_GNOME_KEYRING_LT_VERSION)
26
27version_bits=`echo $VERSION | tr '.' ' '`
28full_version=`printf %03d%03d%03d $version_bits`
29AC_DEFINE_UNQUOTED(GKR_VERSION, $full_version, [The libgnome-keyring version as a number])
30
31AC_TYPE_PID_T
32AC_TYPE_SIGNAL
33AC_TYPE_SIZE_T
34AC_TYPE_UID_T
35
36GTK_DOC_CHECK(1.9)
37DISTCHECK_CONFIGURE_FLAGS="--enable-gtk-doc"
38AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
39
40PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.16.0 gobject-2.0 gmodule-2.0)
41AC_SUBST(GLIB_CFLAGS)
42AC_SUBST(GLIB_LIBS)
43
44LIBRARY_CFLAGS="$LIBRARY_CFLAGS $GLIB_CFLAGS"
45LIBRARY_LIBS="$LIBRARY_LIBS $GLIB_LIBS"
46
47GETTEXT_PACKAGE="libgnome-keyring"
48AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [The gettext domain name])
49AC_SUBST(GETTEXT_PACKAGE)
50
51AM_GLIB_GNU_GETTEXT
52
53# Introspection
54GOBJECT_INTROSPECTION_CHECK([1.30.0])
55
56# Vala bindings
57VAPIGEN_CHECK([0.16])
58
59AC_ARG_WITH(vapidir, [AC_HELP_STRING([--with-vapidir], [Directory for VAPI files]),
60            ], [VAPIGEN_VAPIDIR=$with_vapidir])
61
62if test "$with_vapidir" = ""; then
63	VAPIDIR="$VAPIGEN_VAPIDIR"
64else
65	VAPIDIR="$with_vapidir"
66fi
67
68AC_SUBST(VAPIDIR)
69
70# --------------------------------------------------------------------
71# Check for various credentials.
72#
73
74AC_MSG_CHECKING(for struct cmsgcred)
75AC_TRY_COMPILE([
76#include <sys/types.h>
77#include <sys/socket.h>
78],[
79struct cmsgcred cred;
80
81cred.cmcred_pid = 0;
82],have_struct_cmsgcred=yes,have_struct_cmsgcred=no)
83AC_MSG_RESULT($have_struct_cmsgcred)
84
85if test x$have_struct_cmsgcred = xyes; then
86	AC_DEFINE(HAVE_CMSGCRED, 1, [Have cmsgcred structure])
87fi
88
89# --------------------------------------------------------------------
90# Check for getpeerucred
91#
92
93AC_CHECK_FUNCS(getpeerucred, AC_DEFINE(HAVE_GETPEERUCRED,1,[Have getpeerucred]))
94
95# --------------------------------------------------------------------
96# Check for getpeereid
97#
98
99AC_CHECK_FUNCS(getpeereid, AC_DEFINE(HAVE_GETPEEREID, 1, [Have getpeereid function]))
100
101# --------------------------------------------------------------------
102# Memory locking
103#
104
105AC_CHECK_FUNCS(mlock)
106
107# --------------------------------------------------------------------
108# DBus Checks
109#
110
111DBUS_REQUIRED=1.0
112PKG_CHECK_MODULES([DBUS], dbus-1 >= 1.0)
113
114DBUS_VERSION=`$PKG_CONFIG --modversion dbus-1`
115DBUS_MAJOR_VERSION=`echo $DBUS_VERSION | cut -d. -f1`
116DBUS_MINOR_VERSION=`echo $DBUS_VERSION | cut -d. -f2`
117DBUS_MICRO_VERSION=`echo $DBUS_VERSION | cut -d. -f3`
118DBUS_CFLAGS="$DBUS_CFLAGS -DGKR_DBUS_MAJOR_VERSION=$DBUS_MAJOR_VERSION"
119DBUS_CFLAGS="$DBUS_CFLAGS -DGKR_DBUS_MINOR_VERSION=$DBUS_MINOR_VERSION"
120DBUS_CFLAGS="$DBUS_CFLAGS -DGKR_DBUS_MICRO_VERSION=$DBUS_MICRO_VERSION"
121
122LIBRARY_CFLAGS="$LIBRARY_CFLAGS $DBUS_CFLAGS"
123LIBRARY_LIBS="$LIBRARY_LIBS $DBUS_LIBS"
124
125# --------------------------------------------------------------------
126# libgcrypt
127#
128
129GCRYPT_VERSION=1.2.2
130GCRYPT_LIBVER=1
131
132AM_PATH_LIBGCRYPT($GCRYPT_LIBVER:$GCRYPT_VERSION,,
133	AC_MSG_ERROR([[
134***
135*** libgcrypt was not found. You may want to get it from
136*** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
137***
138]]))
139libgcrypt=yes
140AC_DEFINE_UNQUOTED(LIBGCRYPT_VERSION, "$GCRYPT_VERSION", [Version of GCRYPT we expect])
141
142LIBRARY_CFLAGS="$LIBRARY_CFLAGS $LIBGCRYPT_CFLAGS"
143LIBRARY_LIBS="$LIBRARY_LIBS $LIBGCRYPT_LIBS"
144
145AC_SUBST([LIBGCRYPT_CFLAGS])
146AC_SUBST([LIBGCRYPT_LIBS])
147
148# --------------------------------------------------------------------
149# Debug mode
150#
151
152AC_MSG_CHECKING([for debug mode])
153AC_ARG_ENABLE(debug,
154              AC_HELP_STRING([--enable-debug=no/default/yes],
155              [Turn on or off debugging]))
156
157if test "$enable_debug" != "no"; then
158	AC_DEFINE_UNQUOTED(WITH_DEBUG, 1, [Print debug output])
159	AC_DEFINE_UNQUOTED(_DEBUG, 1, [In debug mode])
160	CFLAGS="$CFLAGS -g"
161fi
162
163if test "$enable_debug" = "yes"; then
164	debug_status="yes (-g, -O0, debug output, testable)"
165	CFLAGS="$CFLAGS -O0"
166elif test "$enable_debug" = "no"; then
167	debug_status="no (no debug output, not testable, G_DISABLE_ASSERT)"
168	AC_DEFINE_UNQUOTED(G_DISABLE_ASSERT, 1, [Disable glib assertions])
169else
170	debug_status="default (-g, debug output, testable)"
171fi
172
173AC_MSG_RESULT($debug_status)
174
175AC_MSG_CHECKING(for more warnings)
176if test "$enable_debug" != "no" -a "$GCC" = "yes"; then
177	AC_MSG_RESULT(yes)
178	CFLAGS="\
179	-Wall \
180	-Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
181	-Wnested-externs -Wpointer-arith \
182	-Wcast-align -Wsign-compare \
183	$CFLAGS"
184
185	for option in -Wno-strict-aliasing -Wno-sign-compare; do
186		SAVE_CFLAGS="$CFLAGS"
187		CFLAGS="$CFLAGS $option"
188		AC_MSG_CHECKING([whether gcc understands $option])
189		AC_TRY_COMPILE([], [],
190			has_option=yes,
191			has_option=no,)
192		if test $has_option = no; then
193			CFLAGS="$SAVE_CFLAGS"
194		fi
195		AC_MSG_RESULT($has_option)
196		unset has_option
197		unset SAVE_CFLAGS
198	done
199	unset option
200else
201	AC_MSG_RESULT(no)
202fi
203
204AC_ARG_ENABLE(strict, [
205               AS_HELP_STRING([--enable-strict], [Strict code compilation])
206             ])
207
208AC_MSG_CHECKING([build strict])
209
210if test "$enable_strict" = "yes"; then
211	CFLAGS="$CFLAGS -Werror"
212	TEST_MODE="thorough"
213	INTROSPECTION_FLAGS="--warn-error"
214	AC_DEFINE_UNQUOTED(WITH_STRICT, 1, [More strict checks])
215	strict_status="yes (-Werror, thorough tests, fatals)"
216else
217	TEST_MODE="quick"
218	INTROSPECTION_FLAGS=""
219	strict_status="no (quick tests, non-fatal warnings)"
220fi
221
222AC_MSG_RESULT($strict_status)
223
224AC_SUBST(INTROSPECTION_FLAGS)
225AC_SUBST(TEST_MODE)
226
227AC_MSG_CHECKING([whether to build with gcov testing])
228AC_ARG_ENABLE([coverage],
229		[AS_HELP_STRING([--enable-coverage], [Whether to enable coverage testing ])],
230		[],
231		[enable_coverage=no])
232
233AC_MSG_RESULT([$enable_coverage])
234
235AC_MSG_CHECKING([code coverage])
236
237if test "$enable_coverage" = "yes"; then
238	if test "$GCC" != "yes"; then
239		AC_MSG_ERROR(Coverage testing requires GCC)
240	fi
241
242	AC_PATH_PROG(GCOV, gcov, no)
243	if test "$GCOV" = "no" ; then
244		AC_MSG_ERROR(gcov tool is not available)
245	fi
246
247	CFLAGS="$CFLAGS -O0 -g --coverage"
248	LDFLAGS="$LDFLAGS --coverage"
249fi
250
251AM_CONDITIONAL([WITH_COVERAGE], [test "$enable_coverage" = "yes"])
252
253AC_MSG_RESULT($enable_coverage)
254
255# ----------------------------------------------------------------------
256# Status
257
258AC_SUBST(LIBRARY_CFLAGS)
259AC_SUBST(LIBRARY_LIBS)
260
261AC_OUTPUT([
262Makefile
263docs/Makefile
264docs/reference/Makefile
265docs/reference/gnome-keyring/Makefile
266egg/Makefile
267egg/tests/Makefile
268library/Makefile
269library/tests/Makefile
270library/gnome-keyring-1.pc
271library/gnome-keyring-1-uninstalled.pc
272po/Makefile.in
273])
274
275# ------------------------------------------------------------------------------
276# Summary
277#
278
279echo
280echo "CFLAGS: $CFLAGS"
281echo
282echo "OPTIONS:"
283echo "  Introspection:        $found_introspection"
284echo "  Vala:                 $enable_vala"
285echo "  Debug Build:          $debug_status"
286echo "  Strict Build:         $strict_status"
287echo "  Code Coverage:        $enable_coverage"
288echo
289