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