Add warnings (normally fatal) on use of archaic C features
[platform/upstream/folks.git] / configure.ac
1 # If not 1, append datestamp to the version number
2 m4_define([folks_released], [0])
3
4 m4_define([folks_major_version], [0])
5 m4_define([folks_minor_version], [9])
6 m4_define([folks_micro_version], [1])
7 m4_define([folks_nano_version], [1])
8
9 # If library source has changed since last release, increment revision
10 # If public symbols have been added, removed or changed since last release,
11 #  increment current and set revision to 0
12 # If public symbols have been added since last release, increment age
13 # If public symbols have been removed since last release, set age to 0
14 m4_define([folks_lt_current], [38])
15 m4_define([folks_lt_revision], [1])
16 m4_define([folks_lt_age], [13])
17
18 # Display the nano_version only if it's not '0'
19 m4_define([folks_base_version],
20           folks_major_version.folks_minor_version.folks_micro_version)
21 m4_define([folks_full_version],
22           [m4_if(folks_nano_version, [0],
23                  folks_base_version, folks_base_version.folks_nano_version)])
24
25 m4_define([folks_maybe_datestamp],
26           m4_if(folks_released, [1],
27                 [], [m4_esyscmd([date +.%Y%m%d | tr -d '\n\r'])]))
28
29 m4_define([folks_version], folks_full_version[]folks_maybe_datestamp)
30 m4_define([folks_major_minor_version], folks_major_version.folks_minor_version)
31 m4_define([folks_module_version], folks_lt_current)
32
33 AC_INIT([folks], folks_version,
34         [https://bugzilla.gnome.org/browse.cgi?product=folks], [folks],
35         [http://telepathy.freedesktop.org/wiki/Folks])
36 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
37
38 AC_PREREQ([2.65])
39 AC_COPYRIGHT([Copyright (C) 2010 Collabora Ltd.])
40
41 AC_CONFIG_MACRO_DIR([m4])
42 AC_CONFIG_SRCDIR([Makefile.am])
43 AC_CONFIG_HEADERS(config.h)
44 AC_CONFIG_SRCDIR([configure.ac])
45 AM_INIT_AUTOMAKE([1.11 dist-xz no-define
46                   no-dist-gzip tar-ustar -Wno-portability color-tests])
47 AM_MAINTAINER_MODE([enable])
48
49 AC_PROG_CC
50 AM_PROG_CC_C_O
51 AC_DISABLE_STATIC
52 LT_INIT
53 PKG_PROG_PKG_CONFIG([0.21])
54 GLIB_GSETTINGS
55
56 AC_SUBST([CFLAGS])
57 AC_SUBST([CPPFLAGS])
58 AC_SUBST([LDFLAGS])
59
60 LT_CURRENT=folks_lt_current
61 LT_REVISION=folks_lt_revision
62 LT_AGE=folks_lt_age
63 AC_SUBST([LT_CURRENT])
64 AC_SUBST([LT_REVISION])
65 AC_SUBST([LT_AGE])
66
67 FOLKS_MAJOR_MINOR_VERSION=folks_major_minor_version
68 AC_SUBST([FOLKS_MAJOR_MINOR_VERSION])
69
70 API_VERSION=0.6
71 AC_SUBST([API_VERSION])
72
73 AC_ARG_ENABLE(tracker-backend,
74         AC_HELP_STRING([--enable-tracker-backend],
75                        [ build the Tracker backend]),
76         enable_tracker_backend=$enableval,
77         enable_tracker_backend=no )
78
79 AM_CONDITIONAL([ENABLE_TRACKER], [test "x$enable_tracker_backend" = "xyes"])
80
81 AS_IF([test "x$enable_tracker_backend" = "xyes"], [
82         AC_DEFINE(HAVE_TRACKER, [1],
83                   [Define as 1 if you have the Tracker backend])
84 ], [
85         AC_DEFINE(HAVE_TRACKER, [0],
86                   [Define as 1 if you have the Tracker backend])
87 ])
88
89 AC_ARG_ENABLE(eds-backend,
90         AC_HELP_STRING([--enable-eds-backend],
91                        [ build the E-D-S backend]),
92         enable_eds_backend=$enableval,
93         enable_eds_backend=yes )
94
95 AS_IF([test "x$enable_eds_backend" = "xyes"], [
96         AC_DEFINE(HAVE_EDS, [1], [Define as 1 if you have the eds backend])
97 ], [
98         AC_DEFINE(HAVE_EDS, [0], [Define as 1 if you have the eds backend])
99 ])
100
101 AM_CONDITIONAL([ENABLE_EDS], [test "x$enable_eds_backend" = "xyes"])
102
103 AC_ARG_ENABLE(ofono-backend,
104         AC_HELP_STRING([--enable-ofono-backend],
105                        [ build the ofono backend]),
106         enable_ofono_backend=$enableval,
107         enable_ofono_backend=yes )
108
109 AS_IF([test "x$enable_ofono_backend" = "xyes"], [
110         AC_DEFINE(HAVE_OFONO, [1], [Define as 1 if you have the ofono backend])
111 ], [
112         AC_DEFINE(HAVE_OFONO, [0], [Define as 1 if you have the ofono backend])
113 ])
114
115 AM_CONDITIONAL([ENABLE_OFONO], [test "x$enable_ofono_backend" = "xyes"])
116
117 AC_ARG_ENABLE(telepathy-backend,
118         AC_HELP_STRING([--enable-telepathy-backend],
119                        [ build the Telepathy backend]),
120         enable_telepathy_backend=$enableval,
121         enable_telepathy_backend=yes )
122
123 AS_IF([test "x$enable_telepathy_backend" = "xyes"], [
124         AC_DEFINE(HAVE_TELEPATHY, [1], [Define as 1 if you have the Telepathy backend])
125 ], [
126         AC_DEFINE(HAVE_TELEPATHY, [0], [Define as 1 if you have the Telepathy backend])
127 ])
128
129 AM_CONDITIONAL([ENABLE_TELEPATHY], [test "x$enable_telepathy_backend" = "xyes"])
130
131 # Automatically check the dependencies for the libsocialweb backend
132 SW_CLIENT_REQUIRED=0.25.20
133 AC_ARG_ENABLE(libsocialweb-backend,
134         AC_HELP_STRING([--enable-libsocialweb-backend=@<:@no/yes/auto@:>@],
135                        [build the Libsocialweb backend (default: auto)]),
136         enable_libsocialweb_backend=$enableval,
137         enable_libsocialweb_backend=auto )
138
139 # this may be overwritten farther down
140 AC_DEFINE(HAVE_LIBSOCIALWEB, [0],
141           [Define as 1 if you have the libsocialweb backend])
142 AS_IF([test "x$enable_libsocialweb_backend" != "xno"], [
143   PKG_CHECK_MODULES([SW_CLIENT], [libsocialweb-client >= $SW_CLIENT_REQUIRED],
144       have_libsocialweb_backend="yes", have_libsocialweb_backend="no")
145   AS_IF([test "x$have_libsocialweb_backend" = "xyes" -a \
146           "x$enable_vala" = "xyes"], [
147     VALA_CHECK_PACKAGES([telepathy-glib
148                          gio-2.0
149                          gee-0.8
150                          libsocialweb-client],
151         ,
152         have_libsocialweb_backend="no")
153   ])
154
155   AS_IF([test "x$have_libsocialweb_backend" = "xyes"], [
156     AC_DEFINE(HAVE_LIBSOCIALWEB, [1],
157               [Define if you have the libsocialweb backend])
158   ])
159 ], [
160    have_libsocialweb_backend=no
161 ])
162
163 AS_IF([test "x$enable_libsocialweb_backend" = "xyes" -a \
164   "x$have_libsocialweb_backend" != "xyes"], [
165     AC_MSG_ERROR([Cannot find libsocialweb dependencies.])
166 ])
167
168 AM_CONDITIONAL([ENABLE_LIBSOCIALWEB],
169         [test "x$have_libsocialweb_backend" = "xyes"])
170
171 # -----------------------------------------------------------
172 # Dependencies
173 # -----------------------------------------------------------
174
175 GLIB_REQUIRED=2.32.0
176 VALA_REQUIRED=0.17.6
177 VALADOC_REQUIRED=0.3.1
178 TRACKER_SPARQL_MAJOR=0.16
179 TRACKER_SPARQL_REQUIRED=0.15.2
180 EBOOK_REQUIRED=3.7.90
181 EDATASERVER_REQUIRED=3.5.3.1
182 ZEITGEIST_REQUIRED=0.3.14
183 GEE_REQUIRED=0.8.4
184
185 AC_SUBST([TRACKER_SPARQL_MAJOR])
186
187 PKG_CHECK_MODULES([GLIB],
188                   [glib-2.0 >= $GLIB_REQUIRED
189                    gobject-2.0 >= $GLIB_REQUIRED])
190 PKG_CHECK_MODULES([GMODULE], [gmodule-no-export-2.0])
191 PKG_CHECK_MODULES([GIO], [gio-2.0 >= $GLIB_REQUIRED])
192 # FIXME: get rid of this when our dependencies stop using dbus-1 (GNOME#696177)
193 PKG_CHECK_MODULES([DBUS_GLIB], [dbus-glib-1 dbus-1])
194
195 PKG_CHECK_MODULES([GEE], [gee-0.8 >= $GEE_REQUIRED])
196
197 TP_GLIB_REQUIRED=0.19.0
198 AS_IF([test x$enable_telepathy_backend = xyes], [
199         PKG_CHECK_MODULES([TP_GLIB], [telepathy-glib >= $TP_GLIB_REQUIRED])
200         PKG_CHECK_MODULES([ZEITGEIST], [zeitgeist-1.0 >= $ZEITGEIST_REQUIRED],
201                            have_zeitgeist="yes",have_zeitgeist="no")])
202 AS_IF([test "x$have_zeitgeist" == "xyes"], [
203    ZEITGEIST_VALAFLAGS="-D HAVE_ZEITGEIST"
204    AC_SUBST([ZEITGEIST_VALAFLAGS])
205    ZEITGEIST_PKG="--pkg zeitgeist-1.0"
206    AC_SUBST([ZEITGEIST_PKG])
207 ])
208
209 # Ignore post 0.20 deprecations
210 TP_GLIB_CFLAGS="$TP_GLIB_CFLAGS -DTP_VERSION_MIN_REQUIRED=TP_VERSION_0_20"
211 # Prevent post 0.20 APIs
212 TP_GLIB_CFLAGS="$TP_GLIB_CFLAGS -DTP_VERSION_MAX_ALLOWED=TP_VERSION_0_20"
213
214 AS_IF([test x$enable_tracker_backend = xyes], [
215         PKG_CHECK_MODULES([TRACKER_SPARQL],
216                           [tracker-sparql-$TRACKER_SPARQL_MAJOR >= \
217                            $TRACKER_SPARQL_REQUIRED])
218 ])
219
220 AS_IF([test x$enable_eds_backend = xyes], [
221         PKG_CHECK_MODULES([EBOOK], [libebook-1.2 >= $EBOOK_REQUIRED
222                                     libebook-contacts-1.2 >= $EBOOK_REQUIRED])
223         PKG_CHECK_MODULES([EDATASERVER], [libedataserver-1.2 >= $EDATASERVER_REQUIRED])
224 ])
225
226 AS_IF([test x$enable_ofono_backend = xyes], [
227         PKG_CHECK_MODULES([EBOOK], [libebook-1.2 >= $EBOOK_REQUIRED])
228 ])
229
230 #
231 # Vala building options -- allows tarball builds without installing Vala
232 #
233 AC_ARG_ENABLE([vala],
234               AS_HELP_STRING([--enable-vala],
235                              [Enable building from the Vala sources]),
236               [enable_vala=$enableval],
237               [enable_vala=no])
238
239 # will be re-set as necessary below
240 AM_CONDITIONAL([HAVE_INTROSPECTION], [test "x$enable_vala" = "xyes"])
241 sd=${srcdir}/
242
243 # Force Vala for non-release builds
244 m4_if(folks_released, [1], [],
245     [
246         enable_vala=yes
247         echo "Vala compiler required for non-release builds; requiring Vala..."
248     ])
249
250 # Force Vala if generated source is missing or outdated
251 AS_IF([test \
252         ! -e ${sd}tools/folks_import_vala.stamp -o \
253         ! -e ${sd}tests/folks/abstract_field_details_vala.stamp -o \
254         ! -e ${sd}tests/folks/aggregation_vala.stamp -o \
255         ! -e ${sd}tests/folks/backend_loading_vala.stamp -o \
256         ! -e ${sd}tests/key-file/individual_retrieval_vala.stamp -o \
257         ! -e ${sd}tests/lib/folks-test.vapi -o \
258         ! -e ${sd}tests/lib/key-file/kf-test.vapi -o \
259         ! -e ${sd}tests/lib/key-file/libkf_test_la_vala.stamp -o \
260         ! -e ${sd}tests/lib/telepathy/contactlist/tp-test-contactlist.gir -o \
261         ! -e ${sd}tests/lib/telepathy/contactlist/tp-test-contactlist.vapi -o \
262         ! -e ${sd}tests/lib/libfolks_test_la_vala.stamp -o \
263         ! -e ${sd}tests/telepathy/persona_store_capabilities_vala.stamp -o \
264         ! -e ${sd}tests/telepathy/individual_retrieval_vala.stamp -o \
265         ! -e ${sd}tests/telepathy/individual_properties_vala.stamp -o \
266         ! -e ${sd}tests/folks/backend_loading_vala.stamp -o \
267         ! -e ${sd}backends/key-file/key_file_la_vala.stamp -o \
268         ! -e ${sd}backends/telepathy/telepathy_la_vala.stamp \
269                 -o \
270         ! -e ${sd}backends/telepathy/lib/folks-telepathy.vapi -o \
271         ! -e ${sd}backends/telepathy/lib/tp-lowlevel.gir -o \
272         ! -e ${sd}backends/telepathy/lib/tp-lowlevel.vapi -o \
273         ! -e ${sd}backends/telepathy/lib/libfolks_telepathy_la_vala.stamp -o \
274         ! -e ${sd}folks/folks-internal.h -o \
275         ! -e ${sd}folks/folks-internal.vapi -o \
276         ! -e ${sd}folks/libfolks_internal_la_vala.stamp -o \
277         ! -e ${sd}folks/folks.vapi -o \
278         ! -e ${sd}folks/libfolks_la_vala.stamp \
279       ], [
280         enable_vala=yes
281         echo "Vala source needs to be re-compiled; requiring Vala..."
282 ])
283
284 AS_IF([test "x$enable_vala" = "xyes"], [
285         AM_PROG_VALAC([$VALA_REQUIRED])
286         AS_IF([test "x$VALAC" = "x"], [
287               AC_MSG_ERROR([Vala requested but valac is not installed])
288         ])
289
290         AC_PATH_PROG([VAPIGEN], [vapigen], [])
291         AS_IF([test "x$VAPIGEN" = "x"], [
292               AC_MSG_ERROR([Vala must be built with --enable-vapigen])
293         ])
294
295         # require GLib >= 2.24 so GLib.Array, etc. reffing is handled
296         # automatically
297         AM_VALAFLAGS="--target-glib=2.24"
298         # within the libfolks tree, select inline code paths
299         AM_VALAFLAGS="$AM_VALAFLAGS -D FOLKS_COMPILATION"
300         AC_SUBST([AM_VALAFLAGS])
301         AC_SUBST([VAPIGENFLAGS])
302         AC_SUBST([VAPIDIR])
303
304         VALA_CHECK_PACKAGES([gio-2.0
305                              gee-0.8])
306
307         AS_IF([test x$enable_telepathy_backend = xyes], [
308           VALA_CHECK_PACKAGES([telepathy-glib])
309           AS_IF([test "x$have_zeitgeist" == "xyes"], [
310               VALA_CHECK_PACKAGES([zeitgeist-1.0])
311           ])
312         ])
313
314         AS_IF([test x$enable_tracker_backend = xyes], [
315           VALA_CHECK_PACKAGES([tracker-sparql-$TRACKER_SPARQL_MAJOR])
316         ])
317
318         AS_IF([test x$enable_eds_backend = xyes], [
319           VALA_CHECK_PACKAGES([libebook-1.2 libebook-contacts-1.2 libedataserver-1.2 libxml-2.0])
320         ])
321
322         AS_IF([test x$enable_ofono_backend = xyes], [
323           VALA_CHECK_PACKAGES([libebook-1.2])
324         ])
325 ])
326
327 # this will set HAVE_INTROSPECTION
328 GOBJECT_INTROSPECTION_REQUIRE([1.30])
329
330 AM_CONDITIONAL([HAVE_VALA], [test "x$enable_vala" = "xyes"])
331
332 # Various functions that we need (used in C code generated from Vala)
333 AC_CHECK_FUNCS([memset])
334 AC_CHECK_FUNCS([strstr])
335
336 AM_CONDITIONAL([NOT_RELEASE], [test "x$folks_released" = "x0"])
337
338 # -----------------------------------------------------------
339 # Backends
340 # -----------------------------------------------------------
341
342 FOLKS_MODULE_VERSION=folks_module_version
343 AC_SUBST([FOLKS_MODULE_VERSION])
344 AC_DEFINE([MODULE_VERSION], "folks_module_version", [Module interface version])
345
346 BACKEND_DIR='$(libdir)/folks/$(FOLKS_MODULE_VERSION)/backends'
347 AC_SUBST([BACKEND_DIR])
348
349 # -----------------------------------------------------------
350 # Tools
351 # -----------------------------------------------------------
352
353 AC_ARG_ENABLE([import-tool],
354               AS_HELP_STRING([--enable-import-tool],
355                              [Enable building the meta-contact import tool]),
356               [enable_import_tool=$enableval with_import_tool=$enableval],
357               [enable_import_tool=maybe with_import_tool=no])
358 AS_IF([test "$enable_import_tool" != "no"],
359       [PKG_CHECK_MODULES([LIBXML], [libxml-2.0],
360                          [with_import_tool=yes], [with_import_tool=no])])
361 AS_IF([test "$enable_import_tool" = "yes" -a "$with_import_tool" = "no"],
362       [AC_MSG_ERROR([Import tool explicitly enabled, but libxml2 not found])])
363 AM_CONDITIONAL([ENABLE_IMPORT_TOOL], [test "$with_import_tool" = "yes"])
364
365 # Readline's required for the folks-inspect program
366 AC_ARG_ENABLE([inspect-tool],
367               AS_HELP_STRING([--enable-inspect-tool],
368                              [Enable building the data inspection tool]),
369               [enable_inspect_tool=$enableval with_inspect_tool=$enableval],
370               [enable_inspect_tool=maybe with_inspect_tool=no])
371 AS_IF([test "$enable_inspect_tool" = "yes" -a "$enable_vala" != "yes"],
372       [AC_MSG_ERROR([Inspect tool explicitly enabled, but Vala wasn't enabled \
373                      using --enable-vala])])
374 AS_IF([test "$enable_inspect_tool" = "maybe" -a "$enable_vala" != "yes"],
375       [AC_MSG_NOTICE([Inspect tool disabled, as Vala wasn't enabled using \
376                       --enable-vala])])
377 AS_IF([test "$enable_inspect_tool" != "no" -a "x$enable_vala" = "xyes"],
378       [AC_CHECK_LIB([readline], [main],
379                     [with_inspect_tool=yes], [with_inspect_tool=no],
380                     [-lncurses])])
381 AS_IF([test "$enable_inspect_tool" != "no" -a "$with_inspect_tool" = "yes" -a \
382        "x$enable_vala" = "xyes"],
383       [VALA_CHECK_PACKAGES([readline])
384        LIBREADLINE="-lreadline -lncurses"
385        AC_DEFINE([HAVE_LIBREADLINE], [1], [Define if you have libreadline])
386        AC_SUBST([LIBREADLINE])])
387 AS_IF([test "$enable_inspect_tool" = "yes" -a "$with_inspect_tool" = "no"],
388       [AC_MSG_ERROR([Inspect tool explicitly enabled, but readline not found])])
389 AM_CONDITIONAL([ENABLE_INSPECT_TOOL], [test "$with_inspect_tool" = "yes"])
390
391 # -----------------------------------------------------------
392 # Tests
393 # -----------------------------------------------------------
394
395 AC_ARG_ENABLE([tests],
396               AS_HELP_STRING([--enable-tests],[Enable building of tests]),
397               [enable_tests=$enableval], [enable_tests=yes])
398 AM_CONDITIONAL([ENABLE_TESTS], [test x$enable_tests = xyes])
399
400 # -----------------------------------------------------------
401 # Documentation
402 # -----------------------------------------------------------
403
404 AC_ARG_ENABLE([docs],
405               AS_HELP_STRING([--enable-docs],[Enable documentation generation]),
406               [enable_docs=$enableval], [enable_docs=no])
407 AM_CONDITIONAL([ENABLE_DOCS], [test x$enable_docs = xyes])
408
409 have_valadoc=no
410 AS_IF([test x$enable_docs = xyes], [
411   # make sure the library is new enough and the program exists
412   PKG_CHECK_MODULES([VALADOC], [valadoc-1.0 >= $VALADOC_REQUIRED])
413   AC_PATH_PROG([VALADOC], [valadoc], [:])
414   AS_IF([test "$VALADOC" != :], have_valadoc=yes)
415 ])
416 AM_CONDITIONAL([HAVE_VALADOC], [test x$have_valadoc = xyes])
417
418 AS_IF([test "x$enable_docs" = "xyes" -a "x$have_valadoc" != "xyes"], [
419     AC_MSG_ERROR([Doc building requested but valadoc not installed.])
420 ])
421
422 # -----------------------------------------------------------
423 # Gettext
424 # -----------------------------------------------------------
425
426 GETTEXT_PACKAGE=AC_PACKAGE_NAME
427 AC_SUBST(GETTEXT_PACKAGE)
428 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, ["$GETTEXT_PACKAGE"], [Define the gettext package to be used])
429 IT_PROG_INTLTOOL([0.50.0])
430
431 # -----------------------------------------------------------
432 # Error flags
433 # -----------------------------------------------------------
434
435 # Disable GLib deprecation warnings for now (#670196); GValueArray is deprecated
436 # but we need it for dbus-glib. Porting to GDBus will solve this (#653198)
437 AC_DEFINE(GLIB_DISABLE_DEPRECATION_WARNINGS, 1, [Build with GLib deprecated])
438
439 # C_ERROR_CFLAGS are only used for C code from telepathy-glib for now,
440 # while ERROR_CFLAGS are used for everything.
441
442 ERROR_CFLAGS=
443
444 AC_ARG_ENABLE([fatal-warnings],
445               AS_HELP_STRING([--disable-fatal-warnings],
446                              [Make various warnings non-fatal]),
447               [enable_fatal_warnings=$enableval], [enable_fatal_warnings=yes])
448
449 AC_DEFUN([FOLKS_ADD_WARNING],
450   [
451     AS_COMPILER_FLAG([-Werror=$2],
452       [
453         AS_IF([test "x$enable_fatal_warnings" = xyes],
454           [$1="[$]$1 -Werror=$2"],
455           [$1="[$]$1 -W$2"])
456       ])
457   ])
458
459 # It isn't 1970 any more. Require that we write proper ISO C with declarations,
460 # avoiding hard-to-trace bugs on platforms where sizeof(int) != sizeof(void *).
461 FOLKS_ADD_WARNING([ERROR_CFLAGS], [implicit])
462 FOLKS_ADD_WARNING([ERROR_CFLAGS], [missing-declarations])
463 FOLKS_ADD_WARNING([ERROR_CFLAGS], [missing-parameter-type])
464 FOLKS_ADD_WARNING([ERROR_CFLAGS], [missing-prototypes])
465 FOLKS_ADD_WARNING([ERROR_CFLAGS], [nested-externs])
466 FOLKS_ADD_WARNING([ERROR_CFLAGS], [old-style-declaration])
467 FOLKS_ADD_WARNING([ERROR_CFLAGS], [old-style-definition])
468 FOLKS_ADD_WARNING([ERROR_CFLAGS], [strict-prototypes])
469
470 AS_COMPILER_FLAG([-Wall], [C_ERROR_CFLAGS="-Wall"], [C_ERROR_CFLAGS=""])
471 AS_COMPILER_FLAG([-Werror], [werror=yes], [werror=no])
472
473 AC_ARG_ENABLE([debug],
474               AS_HELP_STRING([--disable-debug],[compile without debug code]),
475               [enable_debug=$enableval], [enable_debug=yes])
476
477 AS_COMPILER_FLAG([-Wextra], [wextra=yes], [wextra=no])
478 AS_COMPILER_FLAG([-Wno-missing-field-initializers],
479                  [wno_missing_field_initializers=yes],
480                  [wno_missing_field_initializers=no])
481 AS_COMPILER_FLAG([-Wno-unused-parameter],
482                  [wno_unused_parameter=yes], [wno_unused_parameter=no])
483 AS_COMPILER_FLAG([-Wstrict-prototypes], [wstrict_prototypes=yes],
484                  [wstrict_prototypes=no])
485 AS_COMPILER_FLAG([-Wmissing-prototypes], [wmissing_prototypes=yes],
486                  [wmissing_prototypes=no])
487 AS_COMPILER_FLAG([-Wimplicit-function-declaration],
488                  [wimplicit_function_declaration=yes],
489                  [wimplicit_function_declaration=no])
490 AS_COMPILER_FLAG([-Wpointer-arith], [wpointer_arith=yes], [wpointer_arith=no])
491 AS_COMPILER_FLAG([-Winit-self], [winit_self=yes], [winit_self=no])
492 AS_COMPILER_FLAG([-Wformat=2], [wformat=yes], [wformat=no])
493 AS_COMPILER_FLAG([-Wmissing-include-dirs], [wmissing_include_dirs=yes],
494                  [wmissing_include_dirs=no])
495 AS_COMPILER_FLAG([-Waggregate-return], [waggregate_return=yes],
496                  [waggregate_return=no])
497 AS_COMPILER_FLAG([-Wdeclaration-after-statement],
498                  [wdeclaration_after_statement=yes],
499                  [wdeclaration_after_statement=no])
500
501 m4_if(folks_released, [1], [],
502     [
503         # Iff we support -Werror, then use it with all our compiler warnings.
504         if test x$werror = xyes; then
505             flag="-Werror="
506         else
507             flag="-W"
508         fi
509
510         if test x$wextra = xyes -a \
511             x$wno_missing_field_initializers = xyes -a \
512             x$wno_unused_parameter = xyes -a x$wstrict_prototypes = xyes -a \
513             x$wmissing_prototypes = xyes -a \
514             x$wimplicit_function_declaration = xyes -a x$wpointer_arith = xyes \
515             -a x$winit_self = xyes -a x$wformat = xyes -a \
516             x$wmissing_include_dirs = xyes -a x$waggregate_return = xyes -a \
517             x$wdeclaration_after_statement = xyes; then
518             C_ERROR_CFLAGS="$C_ERROR_CFLAGS -Wextra \
519                 -Wno-missing-field-initializers \
520                 -Wno-unused-parameter ${flag}strict-prototypes \
521                 ${flag}missing-prototypes ${flag}implicit-function-declaration \
522                 ${flag}pointer-arith ${flag}init-self ${flag}format=2 \
523                 ${flag}missing-include-dirs ${flag}aggregate-return \
524                 ${flag}declaration-after-statement"
525         fi
526     ])
527
528 AS_COMPILER_FLAG([-D_POSIX_SOURCE], [C_ERROR_CFLAGS="$C_ERROR_CFLAGS -D_POSIX_SOURCE"])
529 AS_COMPILER_FLAG([-std=c99], [C_ERROR_CFLAGS="$C_ERROR_CFLAGS -std=c99"])
530 AS_COMPILER_FLAG([-Wshadow], [C_ERROR_CFLAGS="$C_ERROR_CFLAGS -Wshadow"])
531 AS_COMPILER_FLAG([-Wmissing-prototypes], [C_ERROR_CFLAGS="$C_ERROR_CFLAGS \
532                                           -Wmissing-prototypes"])
533 AS_COMPILER_FLAG([-Wmissing-declarations], [C_ERROR_CFLAGS="$C_ERROR_CFLAGS \
534                                             -Wmissing-declarations"])
535 AS_COMPILER_FLAG([-Wstrict-prototypes], [C_ERROR_CFLAGS="$C_ERROR_CFLAGS \
536                                          -Wstrict-prototypes"])
537
538 AC_SUBST([ERROR_CFLAGS])
539 AC_SUBST([C_ERROR_CFLAGS])
540
541 # -----------------------------------------------------------
542 # Code coverage flags
543 # -----------------------------------------------------------
544
545 AC_ARG_ENABLE([code-coverage],
546               AS_HELP_STRING([--enable-code-coverage],
547                              [compile with code coverage code]),
548               [enable_code_coverage=$enableval], [enable_code_coverage=no])
549
550 # Only enable code coverage if this isn't a release.
551 m4_if(folks_released, [1], [],
552     [
553         if test "x$GCC" = "xyes"; then
554             if test "x$enable_code_coverage" = "xyes"; then
555                 CODE_COVERAGE_CFLAGS="-fprofile-arcs -ftest-coverage -O0 -ggdb"
556                 CODE_COVERAGE_LDFLAGS="-lgcov"
557             fi
558         fi
559     ])
560
561 AC_SUBST([CODE_COVERAGE_CFLAGS])
562 AC_SUBST([CODE_COVERAGE_LDFLAGS])
563
564 # Vala-related flags
565 AS_IF([test "x$enable_vala" = "xyes" && test "x$enable_fatal_warnings" = "xyes"],
566       [ERROR_INTROSPECTION_SCANNER_ARGS="\
567                         $ERROR_INTROSPECTION_SCANNER_ARGS --warn-error"
568        ERROR_VALAFLAGS="$ERROR_VALAFLAGS --fatal-warnings"])
569
570 # Disable -g if we're building with code coverage enabled, since Vala's
571 # insertion of #line directives into .c files confuses lcov. For the moment,
572 # we'll have to do with looking at code coverage of the generated C files only.
573 # We set the debug flags in CODE_COVERAGE_CFLAGS instead in that case.
574 m4_if(folks_released, [1], [],
575     [
576         if test "x$enable_code_coverage" != "xyes" -o "x$GCC" != "xyes"; then
577             ERROR_VALAFLAGS="$ERROR_VALAFLAGS -g"
578         fi
579     ])
580
581 AC_SUBST([ERROR_INTROSPECTION_SCANNER_ARGS])
582 AC_SUBST([ERROR_VALAFLAGS])
583
584 # -----------------------------------------------------------
585 # Profiling
586 # -----------------------------------------------------------
587
588 AC_ARG_ENABLE([profiling],
589               AS_HELP_STRING([--enable-profiling],
590                              [Enable building profiling points]),
591               [enable_profiling=$enableval],
592               [enable_profiling=no])
593 AM_CONDITIONAL([ENABLE_PROFILING], [test "$enable_profiling" = "yes"])
594
595 # -----------------------------------------------------------
596 # Final output
597 # -----------------------------------------------------------
598
599 AC_CONFIG_FILES([
600     backends/telepathy/lib/folks-telepathy.pc
601     backends/telepathy/lib/folks-telepathy-uninstalled.pc
602     backends/tracker/lib/folks-tracker.deps
603     backends/tracker/lib/folks-tracker.pc
604     backends/tracker/lib/folks-tracker-uninstalled.pc
605     backends/eds/lib/folks-eds.pc
606     backends/eds/lib/folks-eds-uninstalled.pc
607     folks/folks.pc
608     folks/folks-uninstalled.pc
609     folks/org.freedesktop.folks.gschema.xml
610     Makefile
611     backends/Makefile
612     backends/key-file/Makefile
613     backends/libsocialweb/Makefile
614     backends/libsocialweb/lib/Makefile
615     backends/libsocialweb/lib/folks-libsocialweb.pc
616     backends/libsocialweb/lib/folks-libsocialweb-uninstalled.pc
617     backends/telepathy/Makefile
618     backends/telepathy/lib/Makefile
619     backends/tracker/Makefile
620     backends/tracker/lib/Makefile
621     backends/eds/Makefile
622     backends/eds/lib/Makefile
623     backends/ofono/Makefile
624     folks/Makefile
625     docs/Makefile
626     po/Makefile.in
627     tests/Makefile
628     tests/data/Makefile
629     tests/eds/Makefile
630     tests/folks/Makefile
631     tests/key-file/Makefile
632     tests/libsocialweb/Makefile
633     tests/telepathy/Makefile
634     tests/tracker/Makefile
635     tests/lib/Makefile
636     tests/lib/folks-test-uninstalled.pc
637     tests/lib/eds/Makefile
638     tests/lib/key-file/Makefile
639     tests/lib/libsocialweb/Makefile
640     tests/lib/telepathy/Makefile
641     tests/lib/tracker/Makefile
642     tests/lib/telepathy/contactlist/Makefile
643     tests/tools/Makefile
644     tools/Makefile
645     tools/inspect/Makefile
646 ])
647
648 AC_OUTPUT
649
650 echo "
651 Configure summary:
652
653         Vala........................:  ${enable_vala}
654         Vala Compiler...............:  ${VALAC}
655         C Compiler Flags............:  ${CFLAGS} ${ERROR_CFLAGS} ${CODE_COVERAGE_CFLAGS}
656         Linker Flags................:  ${LDFLAGS} ${CODE_COVERAGE_LDFLAGS}
657         Prefix......................:  ${prefix}
658         Bugreporting URL............:  ${PACKAGE_BUGREPORT}
659         Documentation...............:  ${have_valadoc}
660         Import tool.................:  ${with_import_tool}
661         Inspector tool..............:  ${with_inspect_tool}
662         Telepathy backend...........:  ${enable_telepathy_backend}
663         Tracker backend.............:  ${enable_tracker_backend}
664         Libsocialweb backend........:  ${have_libsocialweb_backend}
665         E-D-S backend...............:  ${enable_eds_backend}
666         Ofono backend...............:  ${enable_ofono_backend}
667         Zeitgeist support...........:  ${have_zeitgeist}
668         Build tests.................:  ${enable_tests}
669 "