build fix: Only depend on Gee 0.8.3, since 0.8.4 isn't released yet
[platform/upstream/folks.git] / configure.ac
index 9227586..39e22b8 100644 (file)
@@ -2,18 +2,18 @@
 m4_define([folks_released], [0])
 
 m4_define([folks_major_version], [0])
-m4_define([folks_minor_version], [6])
-m4_define([folks_micro_version], [3])
-m4_define([folks_nano_version], [2])
+m4_define([folks_minor_version], [9])
+m4_define([folks_micro_version], [0])
+m4_define([folks_nano_version], [0])
 
 # If library source has changed since last release, increment revision
-# If interfaces have been added, removed or changed since last release,
+# If public symbols have been added, removed or changed since last release,
 #  increment current and set revision to 0
-# If interfaces have been added since last release, increment age
-# If interfaces have been removed since last release, set age to 0
-m4_define([folks_lt_current], [27])
+# If public symbols have been added since last release, increment age
+# If public symbols have been removed since last release, set age to 0
+m4_define([folks_lt_current], [37])
 m4_define([folks_lt_revision], [1])
-m4_define([folks_lt_age], [2])
+m4_define([folks_lt_age], [12])
 
 # Display the nano_version only if it's not '0'
 m4_define([folks_base_version],
@@ -42,8 +42,8 @@ AC_CONFIG_MACRO_DIR([m4])
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_HEADERS(config.h)
 AC_CONFIG_SRCDIR([configure.ac])
-AM_INIT_AUTOMAKE([1.11 dist-bzip2 no-define
-                  no-dist-gzip tar-ustar -Wno-portability])
+AM_INIT_AUTOMAKE([1.11 dist-xz no-define
+                  no-dist-gzip tar-ustar -Wno-portability color-tests])
 AM_MAINTAINER_MODE([enable])
 
 AC_PROG_CC
@@ -51,6 +51,7 @@ AM_PROG_CC_C_O
 AC_DISABLE_STATIC
 LT_INIT
 PKG_PROG_PKG_CONFIG([0.21])
+GLIB_GSETTINGS
 
 AC_SUBST([CFLAGS])
 AC_SUBST([CPPFLAGS])
@@ -77,47 +78,92 @@ AC_ARG_ENABLE(tracker-backend,
 
 AM_CONDITIONAL([ENABLE_TRACKER], [test "x$enable_tracker_backend" = "xyes"])
 
+AS_IF([test "x$enable_tracker_backend" = "xyes"], [
+        AC_DEFINE(HAVE_TRACKER, [1],
+                  [Define as 1 if you have the Tracker backend])
+], [
+        AC_DEFINE(HAVE_TRACKER, [0],
+                  [Define as 1 if you have the Tracker backend])
+])
+
 AC_ARG_ENABLE(eds-backend,
         AC_HELP_STRING([--enable-eds-backend],
                        [ build the E-D-S backend]),
         enable_eds_backend=$enableval,
         enable_eds_backend=yes )
 
+AS_IF([test "x$enable_eds_backend" = "xyes"], [
+        AC_DEFINE(HAVE_EDS, [1], [Define as 1 if you have the eds backend])
+], [
+        AC_DEFINE(HAVE_EDS, [0], [Define as 1 if you have the eds backend])
+])
+
 AM_CONDITIONAL([ENABLE_EDS], [test "x$enable_eds_backend" = "xyes"])
 
+AC_ARG_ENABLE(ofono-backend,
+       AC_HELP_STRING([--enable-ofono-backend],
+                      [ build the ofono backend]),
+       enable_ofono_backend=$enableval,
+       enable_ofono_backend=yes )
+
+AS_IF([test "x$enable_ofono_backend" = "xyes"], [
+        AC_DEFINE(HAVE_OFONO, [1], [Define as 1 if you have the ofono backend])
+], [
+        AC_DEFINE(HAVE_OFONO, [0], [Define as 1 if you have the ofono backend])
+])
+
+AM_CONDITIONAL([ENABLE_OFONO], [test "x$enable_ofono_backend" = "xyes"])
+
+AC_ARG_ENABLE(telepathy-backend,
+        AC_HELP_STRING([--enable-telepathy-backend],
+                       [ build the Telepathy backend]),
+        enable_telepathy_backend=$enableval,
+        enable_telepathy_backend=yes )
+
+AS_IF([test "x$enable_telepathy_backend" = "xyes"], [
+        AC_DEFINE(HAVE_TELEPATHY, [1], [Define as 1 if you have the Telepathy backend])
+], [
+        AC_DEFINE(HAVE_TELEPATHY, [0], [Define as 1 if you have the Telepathy backend])
+])
+
+AM_CONDITIONAL([ENABLE_TELEPATHY], [test "x$enable_telepathy_backend" = "xyes"])
+
 # Automatically check the dependencies for the libsocialweb backend
-SW_CLIENT_REQUIRED=0.25.15
+SW_CLIENT_REQUIRED=0.25.20
 AC_ARG_ENABLE(libsocialweb-backend,
         AC_HELP_STRING([--enable-libsocialweb-backend=@<:@no/yes/auto@:>@],
                        [build the Libsocialweb backend (default: auto)]),
         enable_libsocialweb_backend=$enableval,
         enable_libsocialweb_backend=auto )
 
-if test "x$enable_libsocialweb_backend" != "xno"; then
+# this may be overwritten farther down
+AC_DEFINE(HAVE_LIBSOCIALWEB, [0],
+          [Define as 1 if you have the libsocialweb backend])
+AS_IF([test "x$enable_libsocialweb_backend" != "xno"], [
   PKG_CHECK_MODULES([SW_CLIENT], [libsocialweb-client >= $SW_CLIENT_REQUIRED],
       have_libsocialweb_backend="yes", have_libsocialweb_backend="no")
-  if test "x$have_libsocialweb_backend" = "xyes" -a \
-          "x$enable_vala" = "xyes"; then
+  AS_IF([test "x$have_libsocialweb_backend" = "xyes" -a \
+          "x$enable_vala" = "xyes"], [
     VALA_CHECK_PACKAGES([telepathy-glib
                          gio-2.0
-                         gee-1.0
+                         gee-0.8
                          libsocialweb-client],
         ,
         have_libsocialweb_backend="no")
-  fi
+  ])
 
-  if test "x$have_libsocialweb_backend" = "xyes"; then
-    AC_DEFINE(HAVE_LIBSOCIALWEB, [],
+  AS_IF([test "x$have_libsocialweb_backend" = "xyes"], [
+    AC_DEFINE(HAVE_LIBSOCIALWEB, [1],
               [Define if you have the libsocialweb backend])
-  fi
-else
+  ])
+], [
    have_libsocialweb_backend=no
-fi
+])
 
-if test "x$enable_libsocialweb_backend" = "xyes" -a \
-  "x$have_libsocialweb_backend" != "xyes"; then
+AS_IF([test "x$enable_libsocialweb_backend" = "xyes" -a \
+  "x$have_libsocialweb_backend" != "xyes"], [
     AC_MSG_ERROR([Cannot find libsocialweb dependencies.])
-fi
+])
 
 AM_CONDITIONAL([ENABLE_LIBSOCIALWEB],
         [test "x$have_libsocialweb_backend" = "xyes"])
@@ -126,15 +172,17 @@ AM_CONDITIONAL([ENABLE_LIBSOCIALWEB],
 # Dependencies
 # -----------------------------------------------------------
 
-GLIB_REQUIRED=2.24.0
-TP_GLIB_REQUIRED=0.13.1
-VALA_REQUIRED=0.13.4
+GLIB_REQUIRED=2.32.0
+VALA_REQUIRED=0.17.6
 VALADOC_REQUIRED=0.3.1
-TRACKER_SPARQL_REQUIRED=0.10
-TRACKER_SPARQL_NEWER_VER=0.10.6
-GCONF2_REQUIRED=2.31
-EBOOK_REQUIRED=3.1.5
-EDATASERVER_REQUIRED=3.1.5
+TRACKER_SPARQL_MAJOR=0.14
+TRACKER_SPARQL_REQUIRED=0.13.1
+EBOOK_REQUIRED=3.5.3
+EDATASERVER_REQUIRED=3.5.3.1
+ZEITGEIST_REQUIRED=0.3.14
+GEE_REQUIRED=0.8.3
+
+AC_SUBST([TRACKER_SPARQL_MAJOR])
 
 PKG_CHECK_MODULES([GLIB],
                   [glib-2.0 >= $GLIB_REQUIRED
@@ -142,31 +190,40 @@ PKG_CHECK_MODULES([GLIB],
 PKG_CHECK_MODULES([GMODULE], [gmodule-no-export-2.0])
 PKG_CHECK_MODULES([GIO], [gio-2.0 >= $GLIB_REQUIRED])
 PKG_CHECK_MODULES([DBUS_GLIB], [dbus-glib-1])
-PKG_CHECK_MODULES([GCONF2], [gconf-2.0 >= $GCONF2_REQUIRED])
 
-# FIXME: We depend on libgee < 0.7 because 0.7 breaks API. bgo#627746
-PKG_CHECK_MODULES([GEE], [gee-1.0 < 0.7])
-PKG_CHECK_MODULES([TP_GLIB], [telepathy-glib >= $TP_GLIB_REQUIRED])
+PKG_CHECK_MODULES([GEE], [gee-0.8 >= $GEE_REQUIRED])
+
+TP_GLIB_REQUIRED=0.19.0
+AS_IF([test x$enable_telepathy_backend = xyes], [
+        PKG_CHECK_MODULES([TP_GLIB], [telepathy-glib >= $TP_GLIB_REQUIRED])
+        PKG_CHECK_MODULES([ZEITGEIST], [zeitgeist-1.0 >= $ZEITGEIST_REQUIRED],
+                          have_zeitgeist="yes",have_zeitgeist="no")])
+AS_IF([test "x$have_zeitgeist" == "xyes"], [
+   ZEITGEIST_VALAFLAGS="-D HAVE_ZEITGEIST"
+   AC_SUBST([ZEITGEIST_VALAFLAGS])
+   ZEITGEIST_PKG="--pkg zeitgeist-1.0"
+   AC_SUBST([ZEITGEIST_PKG])
+])
+
+# Ignore post 0.20 deprecations
+TP_GLIB_CFLAGS="$TP_GLIB_CFLAGS -DTP_VERSION_MIN_REQUIRED=TP_VERSION_0_20"
+# Prevent post 0.20 APIs
+TP_GLIB_CFLAGS="$TP_GLIB_CFLAGS -DTP_VERSION_MAX_ALLOWED=TP_VERSION_0_20"
 
-if test x$enable_tracker_backend = xyes; then
-       # Starting Tracker 0.10.6, the GLib.SpawnError is exception is thrown
-       # when calling Tracker.Sparql.Connection.get (). So we need to test
-       # for the installed version and catch or not the exception, accordingly.
+AS_IF([test x$enable_tracker_backend = xyes], [
         PKG_CHECK_MODULES([TRACKER_SPARQL],
-                          [tracker-sparql-0.10 >= $TRACKER_SPARQL_NEWER_VER],
-                         [AM_CONDITIONAL(HAVE_NEW_TRACKER, [ test 1 == 1 ])],
-                         [PKG_CHECK_MODULES([TRACKER_SPARQL],
-                                             [tracker-sparql-0.10 >= $TRACKER_SPARQL_REQUIRED],
-                                            [AM_CONDITIONAL(HAVE_NEW_TRACKER, [ test 0 == 1 ])])]
-                         )
-else
-       AM_CONDITIONAL(HAVE_NEW_TRACKER, [ test 0 == 1 ])
-fi
+                          [tracker-sparql-$TRACKER_SPARQL_MAJOR >= \
+                           $TRACKER_SPARQL_REQUIRED])
+])
 
-if test x$enable_eds_backend = xyes; then
+AS_IF([test x$enable_eds_backend = xyes], [
         PKG_CHECK_MODULES([EBOOK], [libebook-1.2 >= $EBOOK_REQUIRED])
         PKG_CHECK_MODULES([EDATASERVER], [libedataserver-1.2 >= $EDATASERVER_REQUIRED])
-fi
+])
+
+AS_IF([test x$enable_ofono_backend = xyes], [
+        PKG_CHECK_MODULES([EBOOK], [libebook-1.2 >= $EBOOK_REQUIRED])
+])
 
 #
 # Vala building options -- allows tarball builds without installing Vala
@@ -189,7 +246,7 @@ m4_if(folks_released, [1], [],
     ])
 
 # Force Vala if generated source is missing or outdated
-if test \
+AS_IF([test \
         ! -e ${sd}tools/folks_import_vala.stamp -o \
         ! -e ${sd}tests/folks/abstract_field_details_vala.stamp -o \
         ! -e ${sd}tests/folks/aggregation_vala.stamp -o \
@@ -212,22 +269,26 @@ if test \
         ! -e ${sd}backends/telepathy/lib/tp-lowlevel.gir -o \
         ! -e ${sd}backends/telepathy/lib/tp-lowlevel.vapi -o \
         ! -e ${sd}backends/telepathy/lib/libfolks_telepathy_la_vala.stamp -o \
+        ! -e ${sd}folks/folks-internal.h -o \
+        ! -e ${sd}folks/folks-internal.vapi -o \
+        ! -e ${sd}folks/libfolks_internal_la_vala.stamp -o \
         ! -e ${sd}folks/folks.vapi -o \
-        ! -e ${sd}folks/libfolks_la_vala.stamp ; then
+        ! -e ${sd}folks/libfolks_la_vala.stamp \
+      ], [
         enable_vala=yes
         echo "Vala source needs to be re-compiled; requiring Vala..."
-fi
+])
 
-if test "x$enable_vala" = "xyes" ; then
+AS_IF([test "x$enable_vala" = "xyes"], [
         AM_PROG_VALAC([$VALA_REQUIRED])
-        if test "x$VALAC" = "x"; then
+        AS_IF([test "x$VALAC" = "x"], [
               AC_MSG_ERROR([Vala requested but valac is not installed])
-        fi
+        ])
 
         AC_PATH_PROG([VAPIGEN], [vapigen], [])
-        if test "x$VAPIGEN" = "x"; then
+        AS_IF([test "x$VAPIGEN" = "x"], [
               AC_MSG_ERROR([Vala must be built with --enable-vapigen])
-        fi
+        ])
 
         # require GLib >= 2.24 so GLib.Array, etc. reffing is handled
         # automatically
@@ -236,21 +297,31 @@ if test "x$enable_vala" = "xyes" ; then
         AC_SUBST([VAPIGENFLAGS])
         AC_SUBST([VAPIDIR])
 
-        VALA_CHECK_PACKAGES([telepathy-glib
-                             gio-2.0
-                             gee-1.0])
+        VALA_CHECK_PACKAGES([gio-2.0
+                             gee-0.8])
 
-        if test x$enable_tracker_backend = xyes; then
-          VALA_CHECK_PACKAGES([tracker-sparql-0.10])
-        fi
+        AS_IF([test x$enable_telepathy_backend = xyes], [
+          VALA_CHECK_PACKAGES([telepathy-glib])
+         AS_IF([test "x$have_zeitgeist" == "xyes"], [
+             VALA_CHECK_PACKAGES([zeitgeist-1.0])
+         ])
+        ])
 
-        if test x$enable_eds_backend = xyes; then
+        AS_IF([test x$enable_tracker_backend = xyes], [
+          VALA_CHECK_PACKAGES([tracker-sparql-$TRACKER_SPARQL_MAJOR])
+        ])
+
+        AS_IF([test x$enable_eds_backend = xyes], [
           VALA_CHECK_PACKAGES([libebook-1.2 libedataserver-1.2 libxml-2.0])
-        fi
-fi
+        ])
+
+        AS_IF([test x$enable_ofono_backend = xyes], [
+          VALA_CHECK_PACKAGES([libebook-1.2])
+        ])
+])
 
 # this will set HAVE_INTROSPECTION
-GOBJECT_INTROSPECTION_REQUIRE([0.9.12])
+GOBJECT_INTROSPECTION_REQUIRE([1.30])
 
 AM_CONDITIONAL([HAVE_VALA], [test "x$enable_vala" = "xyes"])
 
@@ -258,6 +329,8 @@ AM_CONDITIONAL([HAVE_VALA], [test "x$enable_vala" = "xyes"])
 AC_CHECK_FUNCS([memset])
 AC_CHECK_FUNCS([strstr])
 
+AM_CONDITIONAL([NOT_RELEASE], [test "x$folks_released" = "x0"])
+
 # -----------------------------------------------------------
 # Backends
 # -----------------------------------------------------------
@@ -274,35 +347,44 @@ AC_SUBST([BACKEND_KF])
 BACKEND_TP='$(top_builddir)/backends/telepathy/.libs/telepathy.so'
 AC_SUBST([BACKEND_TP])
 
-if test x$have_libsocialweb_backend = xyes; then
+AS_IF([test x$have_libsocialweb_backend = xyes], [
   BACKEND_LIBSOCIALWEB='$(top_builddir)/backends/libsocialweb/.libs/libsocialweb.so'
   AC_SUBST([BACKEND_LIBSOCIALWEB])
-fi
+])
 
-if test x$enable_tracker_backend = xyes; then
+AS_IF([test x$enable_tracker_backend = xyes], [
   BACKEND_TRACKER='$(top_builddir)/backends/tracker/.libs/tracker.so'
   AC_SUBST([BACKEND_TRACKER])
-fi
+])
 
-if test x$enable_eds_backend = xyes; then
+AS_IF([test x$enable_eds_backend = xyes], [
   BACKEND_EDS='$(top_builddir)/backends/eds/.libs/eds.so'
   AC_SUBST([BACKEND_EDS])
+])
+
+if test x$enable_ofono_backend = xyes; then
+  BACKEND_OFONO='$(top_builddir)/backends/ofono/.libs/ofono.so'
+  AC_SUBST([BACKEND_OFONO])
 fi
 
 # All of the backend libraries in our tree; to be used by the tests
 BACKEND_UNINST_PATH='$(BACKEND_KF):$(BACKEND_TP)'
-if test x$have_libsocialweb_backend = xyes; then
+AS_IF([test x$have_libsocialweb_backend = xyes], [
   LIBSOCIALWEB_BACKEND_UNINST_PATH='$(BACKEND_LIBSOCIALWEB)'
   BACKEND_UNINST_PATH="$BACKEND_UNINST_PATH:$LIBSOCIALWEB_BACKEND_UNINST_PATH"
-fi
-if test x$enable_tracker_backend = xyes; then
+])
+AS_IF([test x$enable_tracker_backend = xyes], [
   TRACKER_BACKEND_UNINST_PATH='$(BACKEND_TRACKER)'
   BACKEND_UNINST_PATH="$BACKEND_UNINST_PATH:$TRACKER_BACKEND_UNINST_PATH"
-fi
-if test x$enable_eds_backend = xyes; then
+])
+AS_IF([test x$enable_eds_backend = xyes], [
   EDS_BACKEND_UNINST_PATH='$(BACKEND_EDS)'
   BACKEND_UNINST_PATH="$BACKEND_UNINST_PATH:$EDS_BACKEND_UNINST_PATH"
-fi
+])
+AS_IF([test x$enable_ofono_backend = xyes], [
+  OFONO_BACKEND_UNINST_PATH='$(BACKEND_OFONO)'
+  BACKEND_UNINST_PATH="$BACKEND_UNINST_PATH:$OFONO_BACKEND_UNINST_PATH"
+])
 AC_SUBST([BACKEND_UNINST_PATH])
 
 # -----------------------------------------------------------
@@ -348,6 +430,17 @@ AS_IF([test "$enable_inspect_tool" = "yes" -a "$with_inspect_tool" = "no"],
 AM_CONDITIONAL([ENABLE_INSPECT_TOOL], [test "$with_inspect_tool" = "yes"])
 
 # -----------------------------------------------------------
+# Tests
+# -----------------------------------------------------------
+
+AC_ARG_ENABLE([tests],
+              AS_HELP_STRING([--enable-tests],[Enable building of tests]),
+              [enable_tests=$enableval], [enable_tests=yes])
+AS_IF([test "$enable_tests" = "yes" -a "$enable_telepathy_backend" = "no"],
+      [AC_MSG_ERROR([The Telepathy backend must be enabled to build tests])])
+AM_CONDITIONAL([ENABLE_TESTS], [test x$enable_tests = xyes])
+
+# -----------------------------------------------------------
 # Documentation
 # -----------------------------------------------------------
 
@@ -357,17 +450,17 @@ AC_ARG_ENABLE([docs],
 AM_CONDITIONAL([ENABLE_DOCS], [test x$enable_docs = xyes])
 
 have_valadoc=no
-if test x$enable_docs = xyes; then
+AS_IF([test x$enable_docs = xyes], [
   # make sure the library is new enough and the program exists
   PKG_CHECK_MODULES([VALADOC], [valadoc-1.0 >= $VALADOC_REQUIRED])
   AC_PATH_PROG([VALADOC], [valadoc], [:])
   AS_IF([test "$VALADOC" != :], have_valadoc=yes)
-fi
+])
 AM_CONDITIONAL([HAVE_VALADOC], [test x$have_valadoc = xyes])
 
-if test "x$enable_docs" = "xyes" -a "x$have_valadoc" != "xyes"; then
+AS_IF([test "x$enable_docs" = "xyes" -a "x$have_valadoc" != "xyes"], [
     AC_MSG_ERROR([Doc building requested but valadoc not installed.])
-fi
+])
 
 # -----------------------------------------------------------
 # Gettext
@@ -376,12 +469,16 @@ fi
 GETTEXT_PACKAGE=AC_PACKAGE_NAME
 AC_SUBST(GETTEXT_PACKAGE)
 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, ["$GETTEXT_PACKAGE"], [Define the gettext package to be used])
-IT_PROG_INTLTOOL([0.35.0])
+IT_PROG_INTLTOOL([0.50.0])
 
 # -----------------------------------------------------------
 # Error flags
 # -----------------------------------------------------------
 
+# Disable GLib deprecation warnings for now (#670196); GValueArray is deprecated
+# but we need it for dbus-glib. Porting to GDBus will solve this (#653198)
+AC_DEFINE(GLIB_DISABLE_DEPRECATION_WARNINGS, 1, [Build with GLib deprecated])
+
 AS_COMPILER_FLAG([-Wall], [ERROR_CFLAGS="-Wall"], [ERROR_CFLAGS=""])
 AS_COMPILER_FLAG([-Werror], [werror=yes], [werror=no])
 
@@ -389,29 +486,54 @@ AC_ARG_ENABLE([debug],
               AS_HELP_STRING([--disable-debug],[compile without debug code]),
               [enable_debug=$enableval], [enable_debug=yes])
 
-AC_ARG_ENABLE([Werror],
-              AS_HELP_STRING([--disable-Werror],
-                             [compile without -Werror (normally enabled in
-                              development builds)]),
-              [werror=$enableval], [werror=yes])
-
 AS_COMPILER_FLAG([-Wextra], [wextra=yes], [wextra=no])
 AS_COMPILER_FLAG([-Wno-missing-field-initializers],
                  [wno_missing_field_initializers=yes],
                  [wno_missing_field_initializers=no])
 AS_COMPILER_FLAG([-Wno-unused-parameter],
                  [wno_unused_parameter=yes], [wno_unused_parameter=no])
+AS_COMPILER_FLAG([-Wstrict-prototypes], [wstrict_prototypes=yes],
+                 [wstrict_prototypes=no])
+AS_COMPILER_FLAG([-Wmissing-prototypes], [wmissing_prototypes=yes],
+                 [wmissing_prototypes=no])
+AS_COMPILER_FLAG([-Wimplicit-function-declaration],
+                 [wimplicit_function_declaration=yes],
+                 [wimplicit_function_declaration=no])
+AS_COMPILER_FLAG([-Wpointer-arith], [wpointer_arith=yes], [wpointer_arith=no])
+AS_COMPILER_FLAG([-Winit-self], [winit_self=yes], [winit_self=no])
+AS_COMPILER_FLAG([-Wformat=2], [wformat=yes], [wformat=no])
+AS_COMPILER_FLAG([-Wmissing-include-dirs], [wmissing_include_dirs=yes],
+                 [wmissing_include_dirs=no])
+AS_COMPILER_FLAG([-Waggregate-return], [waggregate_return=yes],
+                 [waggregate_return=no])
+AS_COMPILER_FLAG([-Wdeclaration-after-statement],
+                 [wdeclaration_after_statement=yes],
+                 [wdeclaration_after_statement=no])
 
 m4_if(folks_released, [1], [],
     [
+        # Iff we support -Werror, then use it with all our compiler warnings.
         if test x$werror = xyes; then
-            ERROR_CFLAGS="$ERROR_CFLAGS -Werror"
+            flag="-Werror="
+        else
+            flag="-W"
         fi
+
         if test x$wextra = xyes -a \
             x$wno_missing_field_initializers = xyes -a \
-            x$wno_unused_parameter = xyes; then
+            x$wno_unused_parameter = xyes -a x$wstrict_prototypes = xyes -a \
+            x$wmissing_prototypes = xyes -a \
+            x$wimplicit_function_declaration = xyes -a x$wpointer_arith = xyes \
+            -a x$winit_self = xyes -a x$wformat = xyes -a \
+            x$wmissing_include_dirs = xyes -a x$waggregate_return = xyes -a \
+            x$wdeclaration_after_statement = xyes; then
             ERROR_CFLAGS="$ERROR_CFLAGS -Wextra \
-                -Wno-missing-field-initializers -Wno-unused-parameter"
+                -Wno-missing-field-initializers \
+                -Wno-unused-parameter ${flag}strict-prototypes \
+                ${flag}missing-prototypes ${flag}implicit-function-declaration \
+                ${flag}pointer-arith ${flag}init-self ${flag}format=2 \
+                ${flag}missing-include-dirs ${flag}aggregate-return \
+                ${flag}declaration-after-statement"
         fi
     ])
 
@@ -427,33 +549,79 @@ AS_COMPILER_FLAG([-Wstrict-prototypes], [ERROR_CFLAGS="$ERROR_CFLAGS \
 
 AC_SUBST([ERROR_CFLAGS])
 
+# -----------------------------------------------------------
+# Code coverage flags
+# -----------------------------------------------------------
+
+AC_ARG_ENABLE([code-coverage],
+              AS_HELP_STRING([--enable-code-coverage],
+                             [compile with code coverage code]),
+              [enable_code_coverage=$enableval], [enable_code_coverage=no])
+
+# Only enable code coverage if this isn't a release.
+m4_if(folks_released, [1], [],
+    [
+        if test "x$GCC" = "xyes"; then
+            if test "x$enable_code_coverage" = "xyes"; then
+                CODE_COVERAGE_CFLAGS="-fprofile-arcs -ftest-coverage -O0 -ggdb"
+                CODE_COVERAGE_LDFLAGS="-lgcov"
+            fi
+        fi
+    ])
+
+AC_SUBST([CODE_COVERAGE_CFLAGS])
+AC_SUBST([CODE_COVERAGE_LDFLAGS])
+
 # Vala-related flags
-AS_IF([test "x$enable_vala" = "xyes"],
+AC_ARG_ENABLE([fatal-warnings],
+              AS_HELP_STRING([--disable-fatal-warnings],
+                             [Make warnings from valac and g-ir-scanner non-fatal]),
+              [enable_fatal_warnings=$enableval], [enable_fatal_warnings=yes])
+AS_IF([test "x$enable_vala" = "xyes" && test "x$enable_fatal_warnings" = "xyes"],
       [ERROR_INTROSPECTION_SCANNER_ARGS="\
                         $ERROR_INTROSPECTION_SCANNER_ARGS --warn-error"
        ERROR_VALAFLAGS="$ERROR_VALAFLAGS --fatal-warnings"])
 
+# Disable -g if we're building with code coverage enabled, since Vala's
+# insertion of #line directives into .c files confuses lcov. For the moment,
+# we'll have to do with looking at code coverage of the generated C files only.
+# We set the debug flags in CODE_COVERAGE_CFLAGS instead in that case.
 m4_if(folks_released, [1], [],
     [
-        ERROR_VALAFLAGS="$ERROR_VALAFLAGS -g"
+        if test "x$enable_code_coverage" != "xyes" -o "x$GCC" != "xyes"; then
+            ERROR_VALAFLAGS="$ERROR_VALAFLAGS -g"
+        fi
     ])
 
 AC_SUBST([ERROR_INTROSPECTION_SCANNER_ARGS])
 AC_SUBST([ERROR_VALAFLAGS])
 
 # -----------------------------------------------------------
+# Profiling
+# -----------------------------------------------------------
+
+AC_ARG_ENABLE([profiling],
+              AS_HELP_STRING([--enable-profiling],
+                             [Enable building profiling points]),
+              [enable_profiling=$enableval],
+              [enable_profiling=no])
+AM_CONDITIONAL([ENABLE_PROFILING], [test "$enable_profiling" = "yes"])
+
+# -----------------------------------------------------------
 # Final output
 # -----------------------------------------------------------
 
 AC_CONFIG_FILES([
     backends/telepathy/lib/folks-telepathy.pc
     backends/telepathy/lib/folks-telepathy-uninstalled.pc
+    backends/tracker/lib/folks-tracker.deps
     backends/tracker/lib/folks-tracker.pc
     backends/tracker/lib/folks-tracker-uninstalled.pc
     backends/eds/lib/folks-eds.pc
     backends/eds/lib/folks-eds-uninstalled.pc
     folks/folks.pc
     folks/folks-uninstalled.pc
+    folks/org.freedesktop.folks.gschema.xml
     Makefile
     backends/Makefile
     backends/key-file/Makefile
@@ -467,12 +635,13 @@ AC_CONFIG_FILES([
     backends/tracker/lib/Makefile
     backends/eds/Makefile
     backends/eds/lib/Makefile
+    backends/ofono/Makefile
     folks/Makefile
     docs/Makefile
     po/Makefile.in
     tests/Makefile
     tests/data/Makefile
-    tests/data/gconf.path
+    tests/eds/Makefile
     tests/folks/Makefile
     tests/key-file/Makefile
     tests/libsocialweb/Makefile
@@ -480,11 +649,10 @@ AC_CONFIG_FILES([
     tests/tracker/Makefile
     tests/lib/Makefile
     tests/lib/folks-test-uninstalled.pc
+    tests/lib/eds/Makefile
     tests/lib/key-file/Makefile
     tests/lib/libsocialweb/Makefile
     tests/lib/libsocialweb/session.conf
-    tests/eds/Makefile
-    tests/lib/eds/Makefile
     tests/lib/telepathy/Makefile
     tests/lib/tracker/Makefile
     tests/lib/telepathy/contactlist/Makefile
@@ -501,14 +669,18 @@ Configure summary:
 
         Vala........................:  ${enable_vala}
         Vala Compiler...............:  ${VALAC}
-        C Compiler Flags............:  ${CFLAGS} ${ERROR_CFLAGS}
+        C Compiler Flags............:  ${CFLAGS} ${ERROR_CFLAGS} ${CODE_COVERAGE_CFLAGS}
+        Linker Flags................:  ${LDFLAGS} ${CODE_COVERAGE_LDFLAGS}
         Prefix......................:  ${prefix}
         Bugreporting URL............:  ${PACKAGE_BUGREPORT}
         Documentation...............:  ${have_valadoc}
         Import tool.................:  ${with_import_tool}
         Inspector tool..............:  ${with_inspect_tool}
+        Telepathy backend...........:  ${enable_telepathy_backend}
         Tracker backend.............:  ${enable_tracker_backend}
         Libsocialweb backend........:  ${have_libsocialweb_backend}
         E-D-S backend...............:  ${enable_eds_backend}
-
+        Ofono backend...............:  ${enable_ofono_backend}
+        Zeitgeist support...........:  ${have_zeitgeist}
+        Build tests.................:  ${enable_tests}
 "