summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorOve Kåven <ovek@arcticnet.no>2012-08-04 22:41:02 +0200
committerOve Kåven <ovek@arcticnet.no>2012-08-05 04:02:44 +0200
commitc4b73b49ffb348ceaff41f437f45f78ec1dffd99 (patch)
treecc421a797624f8066a8aa4bf3259bc8eea1905f8 /configure.ac
parentbb76a6139c5fbd0ec538c6dd2e41b00aa5258ad4 (diff)
parent4a7988adacf948ed12d21897f3f230bedd673da8 (diff)
Merge tag 'syncevolution-1-2-99-3' into FREMANTLE-1-2-99-3
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac1039
1 files changed, 1039 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 00000000..bf6b19ae
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,1039 @@
+dnl -*- mode: Autoconf; -*-
+dnl Invoke autogen.sh to produce a configure script.
+
+# The STABLE_VERSION is used when building
+# Debian packages. For prereleases (beta, alpha),
+# set it to something like "0.9.2+" and the AC_INIT
+# VERSION to 1.0beta1 to produce 0.9.2+1.0beta1.
+#
+# Starting with the 1.1 release cycle, the rpm-style
+# .99 pseudo-version number is used to mark a pre-release.
+AC_INIT([syncevolution], [m4_esyscmd([build/gen-git-version.sh 1.2.99.3])])
+# STABLE_VERSION=1.0.1+
+AC_SUBST(STABLE_VERSION)
+
+# Generate some files.
+SE_GENERATE_AM_FILES
+SE_GENERATE_LINGUAS
+
+# Default value for --enable/disable-release-mode.
+# Determined by gen-autotools.sh based on versioning.
+# Official, stable releases enable it, pre-releases
+# disable it.
+#
+SE_CHECK_FOR_STABLE_RELEASE
+
+# Minimum version of libsynthesis as defined in its
+# configure script and thus .pc files:
+define([SYNTHESIS_MIN_VERSION], [3.4.0.16.7])
+
+# Line above is patched by gen-autotools.sh. Handle
+# both "yes" and "no".
+m4_define([STABLE_RELEASE_HELP], m4_if(STABLE_RELEASE,[yes],[--disable-release-mode],[--enable-release-mode]))
+
+AC_ARG_ENABLE(release-mode,
+ AS_HELP_STRING([STABLE_RELEASE_HELP],
+ [Controls whether resulting binary is for end-users or
+ testers/developers. For example, stable releases automatically
+ migrate on-disk files without asking, whereas other releases
+ ask before making downgrades impossible (or difficult).
+ Default in this source code is
+ "stable release: STABLE_RELEASE"]),
+ enable_release_mode="$enableval", enable_release_mode="STABLE_RELEASE")
+if test "$enable_release_mode" = "yes"; then
+ AC_DEFINE(SYNCEVOLUTION_STABLE_RELEASE, 1, [binary is meant for end-users])
+fi
+
+AM_INIT_AUTOMAKE([1.11.1 silent-rules subdir-objects -Wno-portability])
+
+AM_PROG_CC_C_O
+
+AM_MAINTAINER_MODE([enable]) # needed for nightly builds where reconfiguration fails under certain chroots
+AC_CONFIG_MACRO_DIR([m4])
+define([SYNTHESISSRC_REPO], [])
+dnl Specify git revisions/branches without prefix, i.e., without 'origin'.
+dnl We'll sort that out below.
+define([SYNTHESISSRC_REVISION], [syncevolution-0.9])
+AC_CONFIG_HEADERS(config.h)
+LT_INIT([dlopen])
+
+dnl check for programs.
+AC_PROG_CXX
+AC_PROG_MAKE_SET
+
+# TODO: Fix code to pass with -pedantic -Wextra.
+# -Wno-unknown-pragmas needed because icalstrdup.h
+# currently uses the "#pragma }" trick. Should remove that.
+# Fix code to work without deprecated methods: G GDK GDK_PIXBUF CAIRO PANGO GTK
+DK_ARG_ENABLE_WARNINGS([SYNCEVO_WFLAGS],
+ [-Wall -Wno-unknown-pragmas -Wno-deprecated-declarations],
+ [-Wall -Wno-unknown-pragmas -Wno-deprecated-declarations],
+ [])
+
+dnl default device type (see AC_DEFINE below)
+DEVICE_TYPE=workstation
+
+AC_ARG_WITH(synthesis-src,
+ AS_HELP_STRING([--with-synthesis-src=<base directory|svn URL|git URL>],
+ [Specifies location of the Synthesis root directory.
+ Use this when the Synthesis library is to
+ be compiled as part of the SyncEvolution compilation. In release
+ versions of SyncEvolution, a copy of the Synthesis code is bundled
+ under 'src/synthesis' and compiled unless something else is
+ specified. --with-synthesis-src can be given a path to sources
+ checked out already, a Subversion repository URL or a git repository
+ URL. When given a repository URL, then the configure script
+ will checkout the sources into 'src/synthesis-workdir' or
+ update that working copy if the directory already exists.
+ Default: bundled source in src/synthesis (in released SyncEvolution sources),
+ SYNTHESISSRC_REPO otherwise.]),
+ [SYNTHESISSRC="$withval"
+ test "$SYNTHESISSRC" != "yes" || AC_MSG_ERROR([--with-synthesis-src requires a parameter (base directory, svn URL or git URL)])],
+ [SYNTHESISSRC="$SYNTHESISSRC_DEF"; REVISION="SYNTHESISSRC_REVISION"])
+
+AC_ARG_WITH(syncml-engines,
+ AS_HELP_STRING([--with-syncml-engines=client|server|both],
+ [Determines which kind of support for SyncML is compiled and linked into SyncEvolution. Default is both. Currently has no effect.]),
+ [SYNCML_ENGINES="$withval"], SYNCML_ENGINES=both)
+
+case $SYNCML_ENGINES in both|client) AC_DEFINE(ENABLE_SYNCML_CLIENT, 1, [SyncML client support available]);; esac
+case $SYNCML_ENGINES in both|server) AC_DEFINE(ENABLE_SYNCML_SERVER, 1, [SyncML server support available]);; esac
+case $SYNCML_ENGINES in both|server|client) true;; *) AC_MSG_ERROR([Invalid value for --with-syncml-engines: $SYNCML_ENGINES]);; esac
+
+AC_ARG_WITH(synthesis-username,
+ AS_HELP_STRING([--with-synthesis-username=<svn username>],
+ [username to use when checking out --with-synthesis-src sources from Subversion, default 'guest']),
+ [USERNAME="$withval"], [USERNAME="guest"])
+
+AC_ARG_WITH(synthesis-revision,
+ AS_HELP_STRING([--with-synthesis-revision=<git tag/branch/hash or Subversion revision>],
+ [Identifies which source revision to use from --with-synthesis-src repository, empty string stands for latest. Default for default --synthesis-src: SYNTHESISSRC_REVISION]),
+ [REVISION="$withval"])
+
+AC_ARG_ENABLE(shared,
+ AS_HELP_STRING([--enable-shared],
+ [build backends as dynamically loadable modules]),
+ enable_shared="$enableval", enable_shared="no")
+
+AC_ARG_ENABLE(static,
+ AS_HELP_STRING([--enable-static],
+ [build backends also as static libraries]),
+ enable_static="$enableval", enable_static="no")
+
+AC_ARG_ENABLE(unit-tests,
+ AS_HELP_STRING([--enable-unit-tests],
+ [enables tests embedded in the source code of the library (changes content of executable)]),
+ enable_unit_tests="$enableval", enable_unit_tests="no")
+AC_ARG_ENABLE(integration-tests,
+ AS_HELP_STRING([--enable-integration-tests],
+ [enables tests outside of the library (can be used together with normal builds of the library)]),
+ enable_integration_tests="$enableval", enable_integration_tests="no")
+
+AC_ARG_ENABLE(static-cxx,
+ AS_HELP_STRING([--enable-static-cxx],
+ [build executables which contain libstdc++ instead of requiring suitable libstdc++.so to run]),
+ enable_static_cxx="$enableval", enable_static_cxx="no")
+
+AC_ARG_ENABLE(evolution-compatibility,
+ AS_HELP_STRING([--enable-evolution-compatibility],
+ [build executables which only call Evolution via dlopen/dlsym: this avoids all hard dependencies on EDS shared objects, but might lead to crashes when their ABI changes]),
+ enable_evolution_compatibility="$enableval", enable_evolution_compatibility="no")
+
+AC_ARG_ENABLE(developer-mode,
+ AS_HELP_STRING([--enable-developer-mode],
+ [The dynamic loadble backend libraries is loaded from current build directory instead of the standard library path]),
+ enable_developer_mode="$enableval", enable_developer_mode="no")
+
+# Maemo hacks:
+# - wrap e_book_from_string() to fix invalid parameter
+# - don't use UTF-8 encoding in Perl script
+AC_ARG_ENABLE(maemo,
+ AS_HELP_STRING([--enable-maemo],
+ [enables some hacks which work around problems with the Maemo 2.0 until at least 3.0 EDS-Dbus]),
+ [AC_DEFINE(ENABLE_MAEMO, 1, [enable Maemo hacks])
+ DEVICE_TYPE=Maemo
+ MODIFY_SYNCCOMPARE='-e "s/use encoding/#use encoding/;" -e "s/:utf8//;"'])
+AC_SUBST(MODIFY_SYNCCOMPARE)
+
+AC_CHECK_HEADERS(signal.h dlfcn.h)
+
+# cppunit-config is used even when both unit tests and integration tests are disabled.
+AC_PATH_PROG([CPPUNIT_CONFIG], [cppunit-config], [no])
+
+test "x$CPPUNIT_CONFIG" != 'xno' || AC_MSG_ERROR("cppunit-config not found.")
+
+# cppunit needed?
+#if test "x$enable_unit_tests" = 'xyes' || test "x$enable_integration_tests" = 'xyes'
+#then
+ CPPUNIT_CXXFLAGS=`$CPPUNIT_CONFIG --cflags`
+ CPPUNIT_LDFLAGS=`$CPPUNIT_CONFIG --libs`
+#fi
+AC_SUBST(CPPUNIT_CXXFLAGS)
+AC_SUBST(CPPUNIT_LDFLAGS)
+
+if test "x$enable_unit_tests" = 'xyes'; then
+ AC_DEFINE(ENABLE_UNIT_TESTS, 1, [enable unit tests inside the library's source code])
+fi
+if test "x$enable_integration_tests" = 'xyes'; then
+ AC_DEFINE(ENABLE_INTEGRATION_TESTS, 1, [enable integration tests inside the final library])
+fi
+AM_CONDITIONAL([ENABLE_UNIT_TESTS], [test "$enable_unit_tests" = "yes"])
+AM_CONDITIONAL([ENABLE_TESTING], [test "$enable_unit_tests" = "yes" || test "$enable_integration_tests" = "yes" ])
+
+if test $enable_static_cxx = "yes"; then
+ LIBS="$LIBS -L."
+ CORE_LDADD_DEP=libstdc++.a
+fi
+AC_SUBST(CORE_LDADD_DEP)
+
+# Check for transport layer.
+# Both curl and libsoup can be enabled and disabled explicitly.
+# The default is to use libsoup if available, otherwise curl.
+
+AC_MSG_CHECKING([for libcurl])
+if LIBCURL_LIBS=`sh -c 'curl-config --libs' 2>&AS_MESSAGE_LOG_FD` && \
+ LIBCURL_CFLAGS=`sh -c 'curl-config --cflags' 2>&AS_MESSAGE_LOG_FD`; then
+ AC_MSG_RESULT([yes])
+ have_libcurl="yes"
+else
+ AC_MSG_RESULT([no])
+ have_libcurl="no"
+fi
+
+PKG_CHECK_MODULES(LIBSOUP, libsoup-gnome-2.4,
+ [have_libsoup="yes"
+ AC_DEFINE(HAVE_LIBSOUP_SOUP_GNOME_FEATURES_H, 1, [enable GNOME specific libsoup])],
+ [PKG_CHECK_MODULES(LIBSOUP, libsoup-2.4,
+ have_libsoup="yes",
+ have_libsoup="no")])
+
+PKG_CHECK_MODULES(LIBOPENOBEX, openobex, have_obex="yes", have_obex="no")
+have_bluetooth="no"
+if test $have_obex = "yes"; then
+ PKG_CHECK_MODULES(BLUEZ, bluez, have_bluez="yes", have_bluez="no")
+ if test $have_bluez = "yes"; then
+ have_bluetooth="yes"
+ fi
+fi
+AC_SUBST(LIBOPENOBEX_CFLAGS)
+AC_SUBST(LIBOPENOBEX_LIBS)
+AC_SUBST(BLUEZ_CFLAGS)
+AC_SUBST(BLUEZ_LIBS)
+
+TRANSPORT=
+TRANSPORT_LIBS=
+TRANSPORT_CFLAGS=
+
+AC_ARG_WITH(ca-certificates,
+ AS_HELP_STRING([--with-ca-certificates=<colon separated list of files>],
+ [Specifies location of one or more CA certificate files.
+ This sets the default value for the SSLServerCertificates option.
+ Default: empty when using libcurl (because it has its own default),
+ a list of paths known to work for Debian and Red Hat otherwise.]),
+ [CA_CERTIFICATES="$withval"])
+
+
+# choose default http transport (mirrors code in EvolutionSyncClient::createTransportAgent())
+if test "$have_libsoup" = "yes"; then
+ default_http_transport="libsoup"
+elif test "$have_libcurl" = "yes"; then
+ default_http_transport="libcurl"
+fi
+
+AC_ARG_ENABLE(libcurl,
+ AS_HELP_STRING([--enable-libcurl],
+ [enable libcurl as transport layer]),
+ [ if test "$enableval" = "yes"; then
+ test "$have_libcurl" = "yes" || AC_MSG_ERROR([libcurl not found])
+ TRANSPORT="$TRANSPORT libcurl"
+ TRANSPORT_LIBS="$TRANSPORT_LIBS $LIBCURL_LIBS"
+ TRANSPORT_CFLAGS="$TRANSPORT_CFLAGS $LIBCURL_CFLAGS"
+ AC_DEFINE(ENABLE_LIBCURL, 1, [enable libcurl transport])
+ else
+ libcurl_disabled="yes"
+ fi ],
+ [ if test "$have_libcurl" = "yes" && test "$default_http_transport" = "libcurl" ; then
+ TRANSPORT="$TRANSPORT libcurl"
+ TRANSPORT_LIBS="$TRANSPORT_LIBS $LIBCURL_LIBS"
+ TRANSPORT_CFLAGS="$TRANSPORT_CFLAGS $LIBCURL_CFLAGS"
+ AC_DEFINE(ENABLE_LIBCURL, 1, [enable libcurl transport])
+ fi ])
+
+AC_ARG_ENABLE(libsoup,
+ AS_HELP_STRING([--enable-libsoup],
+ [enable libsoup as transport layer]),
+ [ if test "$enableval" = "yes"; then
+ test "$have_libsoup" = "yes" || AC_MSG_ERROR([libsoup not found])
+ TRANSPORT="$TRANSPORT libsoup"
+ TRANSPORT_LIBS="$TRANSPORT_LIBS $LIBSOUP_LIBS"
+ TRANSPORT_CFLAGS="$TRANSPORT_CFLAGS $LIBSOUP_CFLAGS"
+ AC_DEFINE(ENABLE_LIBSOUP, 1, [enable libsoup transport])
+ else
+ libsoup_disabled="yes"
+ fi ],
+ [ if test "$have_libsoup" = "yes" && test "$default_http_transport" = "libsoup"; then
+ TRANSPORT="$TRANSPORT libsoup"
+ TRANSPORT_LIBS="$TRANSPORT_LIBS $LIBSOUP_LIBS"
+ TRANSPORT_CFLAGS="$TRANSPORT_CFLAGS $LIBSOUP_CFLAGS"
+ AC_DEFINE(ENABLE_LIBSOUP, 1, [enable libsoup transport])
+ fi ])
+
+# SoupTransportAgent depends on glib
+case "$TRANSPORT" in *libsoup*) need_glib=yes;; esac
+
+bluetooth_disabled=no
+AC_ARG_ENABLE(bluetooth,
+ AS_HELP_STRING([--enable-bluetooth],
+ [enable bluetooth transport support]),
+ [ enable_bluetooth="$enableval"
+ if test "$enableval" = "no"; then
+ bluetooth_disabled=yes
+ fi
+ ],
+ [ enable_bluetooth="$have_bluetooth" ])
+
+if test "$enable_bluetooth" = "yes"; then
+ # currently we need Bluetooth and OBEX support
+ test "$have_bluetooth" = "yes" || AC_MSG_ERROR([openobex or bluez not found])
+
+ AC_LANG(C)
+ CFLAGS_old="$CFLAGS"
+ CFLAGS="$CPPFLAGS $BLUEZ_CFLAGS"
+ # test in this order:
+ # - recent libbluetooth (no _safe variant, base function has bufsize)
+ # - intermediate with _safe
+ # - else assume old-style (no bufsize, no _safe)
+ #
+ # The source code checks the signature both by via pointer assignment and calling
+ # it (better safe than sorry). One these should fail if the signature is not right.
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+ #include <bluetooth/sdp.h>
+ #include <bluetooth/sdp_lib.h>
+ sdp_record_t *(*extract_pdu)(const uint8_t *pdata, int bufsize, int *scanned) =
+ sdp_extract_pdu;
+ void foo(void) {
+ uint8_t *pdata = NULL;
+ int scanned;
+ sdp_extract_pdu(pdata, 100, &scanned);
+ }
+ ])],
+ AC_DEFINE(HAVE_BLUEZ_BUFSIZE, 1, [base libbluetooth functions accept bufsize parameter]),
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+ #include <bluetooth/sdp.h>
+ #include <bluetooth/sdp_lib.h>
+ sdp_record_t *(*extract_pdu)(const uint8_t *pdata, int bufsize, int *scanned) =
+ sdp_extract_pdu_safe;
+ void foo(void) {
+ uint8_t *pdata = NULL;
+ int scanned;
+ sdp_extract_pdu_safe(pdata, 100, &scanned);
+ }
+ ])],
+ AC_DEFINE(HAVE_BLUEZ_SAFE, 1, [libbluetooth has _safe variants])))
+ CFLAGS="$CFLAGS_old"
+
+ if test "$have_obex" = "yes"; then
+ AC_DEFINE(ENABLE_OBEX, 1, [define if openobex library is available])
+ fi
+ if test "$have_bluez" = "yes"; then
+ AC_DEFINE(ENABLE_BLUETOOTH, 1, [define if bluez library is available])
+ fi
+fi
+AM_CONDITIONAL([ENABLE_OBEX], [test "$have_obex" = "yes" && test "$enable_bluetooth" = "yes"])
+AM_CONDITIONAL([ENABLE_BLUETOOTH], [test "$have_bluetooth" = "yes" && test "$enable_bluetooth" = "yes"])
+
+if test ! "$TRANSPORT" &&
+ test "$libsoup_disabled" != "yes" &&
+ test "$libcurl_disabled" != "yes" &&
+ test "$bluetooth_disabled" != "yes" &&
+ test "$have_bluetooth" != "yes" ; then
+ AC_MSG_ERROR([no transport library found, configure with --disable-libcurl --disable-libsoup --disable-bluetooth to continue anyway (only useful if users of libsyncevolution provide transport implementation)])
+fi
+
+# for libsoup we must specify the SSL certificate file outself
+if test "$libsoup_disabled" != "yes" && test -z "$CA_CERTIFICATES"; then
+ # Debian and Red Hat paths
+ CA_CERTIFICATES="/etc/ssl/certs/ca-certificates.crt:/etc/pki/tls/certs/ca-bundle.crt:/usr/share/ssl/certs/ca-bundle.crt"
+fi
+AC_DEFINE_UNQUOTED(SYNCEVOLUTION_SSL_SERVER_CERTIFICATES, "$CA_CERTIFICATES", [default value for SSLServerCertificates option])
+
+AC_SUBST(TRANSPORT_LIBS)
+AC_SUBST(TRANSPORT_CFLAGS)
+
+AC_ARG_ENABLE(ssl-certificate-check,
+ AS_HELP_STRING([--disable-ssl-certificate-check],
+ [Disable SSL certificate checking in all server
+ *templates*. Users can still choose to enable or
+ disable it in their configuration. This is necessary on
+ platforms where the transport library has problems
+ verifying the server's certificate (libsoup + Google,
+ http://bugzilla.moblin.org/show_bug.cgi?id=4551)]),
+ enable_ssl_certificate_check="$enableval",
+ enable_ssl_certificate_check="yes")
+if test "$enable_ssl_certificate_check" = "yes"; then
+ AC_DEFINE(ENABLE_SSL_CERTIFICATE_CHECK, 1, [enable SSL certificate check in server templates])
+fi
+
+# for dbus interface file mangling
+AC_PATH_PROG(XSLT, xsltproc)
+
+
+# Changes in GTK3 mean that supporting both GTK3 and GTK2 in the same codebase
+# is difficult. We want to support GTK2 for the time being so the code is forked.
+AC_ARG_ENABLE(gtk,
+ AS_HELP_STRING([--enable-gtk=major version],
+ [Selects the gtk+ version ("2" or "3") to use for the UI.
+ If this option is used, --enable-gui should be used as well.
+ "3" is the default option if available, otherwise "2".]),
+ [ if test "$enableval" = "3" ; then
+ gtk_version=gtk+-3.0
+ elif test "$enableval" = "2" ; then
+ gtk_version=gtk+-2.0
+ else
+ AC_MSG_ERROR([Unknown gtk version: '$enableval'])
+ fi
+ ],
+ [ PKG_CHECK_EXISTS([gtk+-3.0],
+ [gtk_version=gtk+-3.0],
+ [gtk_version=gtk+-2.0]) ])
+
+
+AM_CONDITIONAL([COND_GTK2], [test "$gtk_version" = "gtk+-2.0"])
+
+AC_ARG_ENABLE(gui,
+ AS_HELP_STRING([--enable-gui[=gui type]],
+ [enables building the GTK+ UI that uses the SyncEvolution DBus API.
+ Options: gtk, moblin, all (builds sync-ui-gtk and sync-ui-moblin)
+ "gtk" is the default for --enable-gui without type. No GUI is
+ built when --enable-gui is not used.]),
+ [ if test "$enableval" = "gtk" ; then
+ enable_gui=gtk
+ elif test "$enableval" = "yes" ; then
+ enable_gui=gtk
+ elif test "$enableval" = "moblin" ; then
+ enable_gui=moblin
+ elif test "$enableval" = "no" ; then
+ enable_gui=no
+ elif test "$enableval" = "all" ; then
+ enable_gui=all
+ else
+ AC_MSG_ERROR([Unknown gui type: '$enableval'])
+ fi
+ ],
+ [ enable_gui=no ])
+
+AM_CONDITIONAL([COND_GUI], [test "$enable_gui" != "no"])
+
+AC_ARG_ENABLE(core,
+ AS_HELP_STRING([--enable-core],
+ [enables building the core SyncEvolution (library, backends)]),
+ enable_core="$enableval",
+ enable_core="yes")
+AM_CONDITIONAL([COND_CORE], [test "$enable_core" = "yes"])
+
+AC_ARG_ENABLE(dbus-service,
+ AS_HELP_STRING([--enable-dbus-service],
+ [enables building the dbus service executable and all related features
+ (the DBus wrapper library, command line usage of server, etc).]),
+ enable_dbus_service="$enableval",
+ [if test $enable_gui = "no"; then
+ enable_dbus_service="no"
+ else
+ enable_dbus_service="yes"
+ fi])
+AM_CONDITIONAL([COND_DBUS], [test "$enable_dbus_service" = "yes"])
+
+AC_ARG_WITH([gio-gdbus],
+ AS_HELP_STRING([--with-gio-gdbus],
+ [enables use of GIO's GDBus instead of the in-tree, Bluez gdbus.]),
+ with_gio_gdbus="$withval",
+ PKG_CHECK_EXISTS([gio-2.0 >= 2.30],
+ [with_gio_gdbus="yes"],
+ [with_gio_gdbus="no"]))
+AM_CONDITIONAL([COND_GIO_GDBUS], [test "x$with_gio_gdbus" = "xyes"])
+
+# We only need to check for dbus-1 if gio-gdbus is not used.
+#
+# Local sync depends on D-Bus communication between parent
+# and child process (works without a D-Bus daemon), and local
+# sync is not an optional feature. Could be made one if
+# someone is interested enough.
+#
+# Therefore, at the moment, either libdbus or gio-gdbus are needed
+# unconditionally. glib is needed in all cases now.
+need_glib=yes
+AS_IF([test "x$with_gio_gdbus" = "xyes"],
+ [PKG_CHECK_MODULES([DBUS], [gio-2.0 >= 2.26])
+ AC_DEFINE([WITH_GIO_GDBUS],[],[Set if using GIO GDBus])],
+ [PKG_CHECK_MODULES(DBUS, dbus-1, dummy=yes,
+ AC_MSG_ERROR(libdbus-1 is required))
+ AC_CHECK_LIB(dbus-1, dbus_watch_get_unix_fd, dummy=yes,
+ AC_DEFINE(NEED_DBUS_WATCH_GET_UNIX_FD, 1,
+ [Define to 1 if you need the dbus_watch_get_unix_fd() function.]))])
+
+if test $enable_dbus_service = "yes"; then
+ if test -z "$XSLT"; then
+ AC_MSG_ERROR([xsltproc not found, is required for D-Bus service])
+ fi
+ # Recent libnotify releases work with gtk+-2.0 and gtk+-3.0.
+ AC_ARG_ENABLE([notify],
+ AS_HELP_STRING([--enable-notify],
+ [send notifications for automatic sync events, using libnotify]),
+ enable_notify="$enableval",
+ PKG_CHECK_EXISTS([libnotify $gtk_version],
+ [enable_notify="yes"],
+ [enable_notify="no"]))
+ AS_IF([test "x$enable_notify" = "xyes"], [PKG_CHECK_MODULES([LIBNOTIFY], [libnotify $gtk_version])]
+ [AC_DEFINE(HAS_NOTIFY, 1,
+ [define if libnotify could be used in dbus service])])
+
+ AC_ARG_ENABLE(notify-compatibility,
+ AS_HELP_STRING([--enable-notify-compatibility],
+ [increase compatibility with binary libnotify installations by loading libnotify.so.1..4 dynamically instead of linking against it]),
+ [enable_notify_compat="$enableval"],
+ [enable_notify_compat="no"]
+ )
+ if test "$enable_notify_compat" = "yes"; then
+ AC_DEFINE(NOTIFY_COMPATIBILITY, 1, [dynamically open libnotify])
+ LIBNOTIFY_LIBS="`echo $LIBNOTIFY_LIBS | sed -e 's/\(-lnotify\|[^ ]*libnotify.la\)/-ldl/'`"
+ fi
+
+ # Here we're using QtGui too because mlite fails to depend on it,
+ # despite using QAction.
+ PKG_CHECK_MODULES(MLITE, [mlite QtGui], HAVE_MLITE=yes, HAVE_MLITE=no)
+ AC_ARG_ENABLE(mlite,
+ AS_HELP_STRING([--enable-mlite],
+ [send notifications for automatic sync events, using mlite (off by default)]),
+ [ enable_mlite="$enableval"
+ test "$enableval" = "no" || test $HAVE_MLITE = "yes" || AC_MSG_ERROR([required mlite package not found]) ],
+ [ enable_mlite="no" ])
+ if test $enable_mlite = "yes"; then
+ AC_DEFINE(HAS_MLITE, 1, [define if mlite could be used in dbus service])
+ else
+ # don't use mlite, even if found
+ MLITE_CFLAGS=
+ MLITE_LIBS=
+ fi
+ AC_DEFINE(DBUS_SERVICE, 1, [define if dbus service is enabled])
+fi
+AM_CONDITIONAL([NOTIFY_COMPATIBILITY], [test "$enable_notify_compat" = "yes"])
+
+AC_SUBST(DBUS_CFLAGS)
+AC_SUBST(DBUS_LIBS)
+AC_SUBST(DBUS_GLIB_CFLAGS)
+AC_SUBST(DBUS_GLIB_LIBS)
+AC_SUBST(LIBNOTIFY_CFLAGS)
+AC_SUBST(LIBNOTIFY_LIBS)
+AC_SUBST(LIBEXECDIR)
+
+DBUS_SERVICES_DIR="${datadir}/dbus-1/services"
+AC_SUBST(DBUS_SERVICES_DIR)
+AC_DEFINE_UNQUOTED(DBUS_SERVICES_DIR, "$DBUS_SERVICES_DIR", [Location of D-Bus services directory])
+
+if test $enable_gui != "no" || test $enable_dbus_service = "yes"; then
+ IT_PROG_INTLTOOL([0.37.1])
+ GETTEXT_PACKAGE=syncevolution
+ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [The gettext package name])
+ AM_GLIB_GNU_GETTEXT
+ SYNCEVOLUTION_LOCALEDIR=[${datadir}/locale]
+fi
+
+# decide which sync-ui(s) we are building:
+# sync-ui (in either GTK or Moblin mode) or both (in separate binaries)
+
+if test $gtk_version = "gtk+-3.0"; then
+ gtk_dir=src/gtk3-ui
+else
+ gtk_dir=src/gtk-ui
+fi
+
+case $enable_gui in
+ all) GUI_PROGRAMS=${gtk_dir}'/sync-ui-gtk${EXEEXT} '${gtk_dir}'/sync-ui-moblin${EXEEXT}'; GUI_DESKTOP_FILES="${gtk_dir}/sync-gtk.desktop ${gtk_dir}/sync-moblin.desktop";;
+ gtk|moblin) GUI_PROGRAMS=${gtk_dir}'/sync-ui${EXEEXT}'; GUI_DESKTOP_FILES="${gtk_dir}/sync.desktop";;
+ no) GUI_PROGRAMS=; GUI_DESKTOP_FILES=;;
+ *) AC_MSG_ERROR([Unknown enable_gui type: '$enable_gui'])
+esac
+
+if test $enable_gui != "no"; then
+ PKG_CHECK_MODULES(DBUS_GLIB, dbus-glib-1 glib-2.0)
+ AC_PATH_PROG(DBUS_BINDING_TOOL, dbus-binding-tool)
+ AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
+
+ gui_modules="$gtk_version glib-2.0 dbus-glib-1 >= 0.60 gio-2.0"
+ if test $enable_gui = "moblin"; then
+ AC_DEFINE(USE_MOBLIN_UX, 1, [Use Moblin UI widgets])
+ fi
+
+ # gtk3 provides a switch widget, otherwise we need mx-gtk
+ if test $gtk_version != "gtk+-3.0" &&
+ test $enable_gui = "moblin" -o $enable_gui = "all"; then
+ gui_modules="$gui_modules mx-gtk-1.0"
+
+ PKG_CHECK_MODULES(MX_GTK_0_99_1, mx-gtk-1.0 >= 0.99.1,
+ have_mx_gtk_0_99_1="yes",
+ have_mx_gtk_0_99_1="no")
+ if test $have_mx_gtk_0_99_1 = "yes"; then
+ AC_DEFINE(MX_GTK_0_99_1, 1, [we have Mx-Gtk 0.99.1 or better])
+ fi
+ fi
+
+ PKG_CHECK_MODULES(UNIQUE, unique-1.0,
+ have_unique="yes",
+ have_unique="no")
+ if test $have_unique = "yes"; then
+ gui_modules="$gui_modules unique-1.0"
+ AC_DEFINE(ENABLE_UNIQUE, 1, [enable single-app-instance functionality])
+ fi
+
+ PKG_CHECK_MODULES(GTK_2_18, gtk+-2.0 >= 2.18,
+ have_gtk_2_18="yes",
+ have_gtk_2_18="no")
+ if test $have_gtk_2_18 = "yes"; then
+ AC_DEFINE(GTK_2_18, 1, [we have GTK+ 2.18 or better])
+ fi
+
+ PKG_CHECK_MODULES(GUI, $gui_modules)
+
+elif test "$enable_dbus_service" = "yes"; then
+ # syncevo-dbus-server needs localization
+ :
+else
+ INTLTOOL_UPDATE="true"
+ USE_NLS="no"
+fi
+AC_SUBST(SYNCEVOLUTION_LOCALEDIR)
+AC_SUBST(GETTEXT_PACKAGE)
+AC_SUBST(GUI_CFLAGS)
+AC_SUBST(GUI_LIBS)
+AC_SUBST(GUI_PROGRAMS)
+AC_SUBST(GUI_DESKTOP_FILES)
+
+# Boost headers: boost/foreach.hpp is needed (1.33/Debian Etch
+# doesn't have it, 1.34/Ubuntu 8.10 Hardy does). 1.35 is available
+# as Debian Etch backport.
+AX_BOOST_BASE(1.34)
+
+# C++ regular expression support is required often enough to make it
+# mandatory.
+PKG_CHECK_MODULES(PCRECPP, libpcrecpp)
+
+# need rst2man for man pages
+AC_ARG_WITH(rst2man,
+ AS_HELP_STRING([--with-rst2man=<path to reStructuredText to man converter>],
+ [Specifies an explicit path to the utility if not found in PATH.
+ An explicit --without-rst2man or not having it installed turn off
+ building of man pages.]),
+ [RST2MAN=$withval
+ if test "$RST2MAN" = "yes"; then
+ AC_PATH_PROG(RST2MAN, rst2man, "no")
+ fi
+ test "$RST2MAN" = "no" || test -x "$RST2MAN" || AC_MSG_ERROR([--with-rst2man=$RST2MAN: tool not found])],
+ [AC_PATH_PROG(RST2MAN, rst2man, "no")])
+AM_CONDITIONAL([COND_MAN_PAGES], [test "$RST2MAN" != "no"])
+
+# need rst2html for HTML version of README
+AC_ARG_WITH(rst2html,
+ AS_HELP_STRING([--with-rst2html=<path to reStructuredText to HTML converter>],
+ [Specifies an explicit path to the utility if not found in PATH.
+ An explicit --without-rst2html or not having it installed turn off
+ building of README in HTML format.]),
+ [RST2HTML=$withval
+ if test "$RST2HTML" = "yes"; then
+ AC_PATH_PROG(RST2HTML, rst2html, "no")
+ fi
+ test "$RST2HTML" = "no" || test -x "$RST2HTML" || AC_MSG_ERROR([--with-rst2html=$RST2HTML: tool not found])],
+ [AC_PATH_PROG(RST2HTML, rst2html, "no")])
+AM_CONDITIONAL([COND_HTML_README], [test "$RST2HTML" != "no"])
+
+# absolute patch to source of Synthesis client library
+SYNTHESIS_SRC=no-synthesis-source
+AC_SUBST(SYNTHESIS_SRC)
+if test "$SYNTHESISSRC" && test "$SYNTHESISSRC" != "none"; then
+ # default: checkout a copy of the sources, remove it during maintainer-clean and distclean
+ CLEAN_CLIENT_SRC=synthesis-workdir
+ SYNTHESIS_SRC=$PWD/src/synthesis-workdir
+
+ AC_MSG_NOTICE( [updating the content of $SYNTHESIS_SRC from $SYNTHESISSRC] )
+ case "$SYNTHESISSRC" in
+ *.git) protocol=git;;
+ *://*) protocol="`echo $SYNTHESISSRC | sed -e 's;://.*;;'`";;
+ *) protocol="file";;
+ esac
+
+ mkdir -p src
+ case $protocol in
+ file)
+ # use existing copy of the sources
+ CLEAN_CLIENT_SRC=
+ case "$SYNTHESISSRC" in
+ /*) SYNTHESIS_SRC="$SYNTHESISSRC";;
+ *) SYNTHESIS_SRC="$PWD/$SYNTHESISSRC";;
+ esac
+ ;;
+ *svn*|*http*)
+ SYNTHESISSRCREV="$SYNTHESISSRC"
+ if test "$REVISION"; then
+ revarg="-r $REVISION "
+ if `echo $SYNTHESISSRC | grep '@[0123456789]*'` >/dev/null; then
+ :
+ else
+ SYNTHESISSRCREV="$SYNTHESISSRC@$REVISION"
+ fi
+ fi
+ if test -d $SYNTHESIS_SRC ; then
+ ( set -x; cd $SYNTHESIS_SRC && svn --username=$USERNAME switch $revarg "$SYNTHESISSRC" ) || AC_MSG_ERROR([updating from $SYNTHESISSRC failed])
+ else
+ (set -x; svn --username=$USERNAME checkout $revarg "$SYNTHESISSRCREV" $SYNTHESIS_SRC ) || AC_MSG_ERROR([checking out $SYNTHESISSRC failed])
+ fi
+ ;;
+ *)
+ if test -d $SYNTHESIS_SRC ; then
+ ( set -x; cd $SYNTHESIS_SRC && git fetch "$SYNTHESISSRC" ) || AC_MSG_ERROR([updating from $SYNTHESISSRC failed])
+ else
+ ( set -x; git clone "$SYNTHESISSRC" $SYNTHESIS_SRC ) || AC_MSG_ERROR([cloning $SYNTHESISSRC failed])
+ fi
+ if test "$REVISION"; then
+ # git 1.6 finds tags and branches without explicit prefix, 1.4.4.4 doesn't
+ ( set -x; cd $SYNTHESIS_SRC &&
+ (git checkout "$REVISION" ||
+ git checkout "tags/$REVISION" ||
+ git checkout "origin/$REVISION") ) || AC_MSG_ERROR([checking out $SYNTHESISSRC failed])
+ fi
+ ;;
+ esac
+elif test "$SYNTHESISSRC" != "none" && test -d $srcdir/src/synthesis; then
+ # use existing copy of the sources; beware of
+ # out-of-tree compilation
+ case $srcdir in
+ /*) SYNTHESIS_SRC="$srcdir/src/synthesis";;
+ *) SYNTHESIS_SRC="$PWD/$srcdir/src/synthesis";;
+ esac
+elif test "$enable_shared" = "no"; then
+ # link against engine
+ PKG_CHECK_MODULES([SYNTHESIS], [synthesis >= 3.4])
+ SYNTHESIS_ENGINE="$SYNTHESIS_LIBS -lsynthesis -lsmltk"
+else
+ # link against SDK alone, except in client-test
+ #PKG_CHECK_MODULES(SYNTHESIS, "synthesis-sdk")
+ #SYNTHESIS_ENGINE="`echo $SYNTHESIS_LIBS | sed -e 's/-lsynthesisstubs/-lsynthesis/'`"
+
+ # can't use the SDK alone because of sysync::SySyncDebugPuts()
+ PKG_CHECK_MODULES([SYNTHESIS], [synthesis >= SYNTHESIS_MIN_VERSION])
+ SYNTHESIS_ENGINE="$SYNTHESIS_LIBS"
+fi
+
+if test $SYNTHESIS_SRC != "no-synthesis-source"; then
+ ( cd $SYNTHESIS_SRC && ( test -f configure || sh autogen.sh ) ) || AC_MSG_ERROR([--with-synthesis-src=$SYNTHESIS_SRC: no Synthesis configure script found in that directory])
+
+ SYNTHESIS_CONFIGURE="$SYNTHESIS_SRC/configure"
+ chmod u+x $SYNTHESIS_SRC/configure $SYNTHESIS_SRC/config.sub $SYNTHESIS_SRC/config.guess
+
+ # use local copy of the sources, with dependencies
+ # to trigger building the synthesis library
+ SYNTHESIS_SUBDIR=$PWD/src/build-synthesis
+ SYNTHESIS_CFLAGS="-I$SYNTHESIS_SUBDIR/src"
+ SYNTHESIS_LIBS="$SYNTHESIS_SUBDIR/src/libsynthesissdk.la $SYNTHESIS_SUBDIR/src/libsmltk.la"
+
+ if test "x$enable_core" = "xno" && test "x$enable_gui" != "xno"; then
+ # SYNTHESIS_SUBDIR is ignored, at least build headers for GUI
+ SYNTHESIS_SUBDIR_INCLUDES=src/synthesis-includes
+ fi
+
+ if test "$enable_shared" = "no"; then
+ # link against the engines that were enabled
+ case $SYNCML_ENGINES in both|client|server) SYNTHESIS_LIBS="$SYNTHESIS_LIBS $SYNTHESIS_SUBDIR/src/libsynthesis.la $SYNTHESIS_SUBDIR/src/libsmltk.la";; esac
+ AC_DEFINE(ENABLE_SYNCML_LINKED, 1, [SyncML engines are linked directly])
+ else
+ # It would be nice if we could avoid linking against libsynthesis.la here.
+ # This doesn't work at the moment because sysync::SySyncDebugPuts()
+ # is called directly by the libsynthesissdk instead of going through
+ # the normal C function pointer lookup.
+ SYNTHESIS_LIBS="$SYNTHESIS_LIBS $SYNTHESIS_SUBDIR/src/libsynthesis.la $SYNTHESIS_SUBDIR/src/libsmltk.la"
+ fi
+ SYNTHESIS_DEP=$SYNTHESIS_LIBS
+
+ # for linking client-test
+ SYNTHESIS_ENGINE="$SYNTHESIS_SUBDIR/src/libsynthesis.la"
+
+ AC_MSG_NOTICE( [configuring the Synthesis library] )
+ if (set -x; mkdir -p $SYNTHESIS_SUBDIR && cd $SYNTHESIS_SUBDIR && eval "\$SHELL \"\$SYNTHESIS_CONFIGURE\" $ac_configure_args \"--srcdir=\$SYNTHESIS_SRC\" " ); then true; else
+ AC_MSG_ERROR( [configuring Synthesis library failed] )
+ fi
+
+ # do the version check with the .pc files prepared by the configure step above
+ export PKG_CONFIG_PATH=$SYNTHESIS_SUBDIR:$PKG_CONFIG_PATH
+ PKG_CHECK_MODULES([WITH_SYNTHESIS_SRC], [synthesis >= SYNTHESIS_MIN_VERSION],
+ [],
+ [AC_MSG_ERROR([need at least libsynthesis >= SYNTHESIS_MIN_VERSION; the latest libsynthesis for SyncEvolution is the one from http://meego.gitorious.org/meego-middleware/libsynthesis])])
+
+fi
+
+AC_SUBST(SYNTHESIS_CFLAGS)
+AC_SUBST(SYNTHESIS_LIBS)
+AC_SUBST(SYNTHESIS)
+AC_SUBST(SYNTHESIS_SUBDIR)
+AC_SUBST(SYNTHESIS_SUBDIR_INCLUDES)
+AC_SUBST(SYNTHESIS_DEP)
+AC_SUBST(SYNTHESIS_ENGINE)
+AC_SUBST(SYNTHESIS_LIB)
+AC_SUBST(SYNTHESISSRC)
+
+BACKEND_CPPFLAGS="$SYNTHESIS_CFLAGS $EPACKAGE_CFLAGS $EBOOK_CFLAGS $ECAL_CFLAGS $GLIB_CFLAGS $BOOST_CPPFLAGS"
+AC_SUBST(BACKEND_CPPFLAGS)
+
+# GNOME Bluetooth Panel plugin
+PKG_CHECK_MODULES(GNOMEBLUETOOTH, [gnome-bluetooth-1.0 >= 2.27.6],
+ [have_gbt="yes"
+ GNOMEBLUETOOTH_DIR=`$PKG_CONFIG --variable=libdir gnome-bluetooth-1.0 2>/dev/null`/gnome-bluetooth],
+ have_gbt="no")
+AC_SUBST(GNOMEBLUETOOTH_CFLAGS)
+AC_SUBST(GNOMEBLUETOOTH_DIR)
+
+AC_ARG_ENABLE(gnome-bluetooth-panel-plugin,
+ AS_HELP_STRING([--enable-gnome-bluetooth-panel-plugin],
+ [GNOME Bluetooth panel plugin adding a "sync" button for paired devices (off by default)]),
+ [enable_gnome_bluetooth_panel="$enableval"],
+ [enable_gnome_bluetooth_panel="no"]
+ )
+if test "$enable_gnome_bluetooth_panel" = "yes"; then
+ test "$have_gbt" = "yes" || AC_MSG_ERROR([--enable-gnome-bluetooth-panel requires
+ pkg-config information for gnome-bluetooth-1.0 >= 2.27.6 which was not found])
+fi
+AM_CONDITIONAL([ENABLE_GNOME_BLUETOOTH_PANEL], [test "$have_gbt" = "yes" && test "$enable_gnome_bluetooth_panel" = "yes"])
+
+AC_ARG_ENABLE(doc,
+ AS_HELP_STRING([--enable-doc],
+ [generate backend and DBus API documentation]),
+ enable_doc="$enableval", enable_doc="no")
+
+AM_CONDITIONAL([COND_DOC], [test "$enable_doc" != "no"])
+
+dnl add backends stuff.
+SE_ADD_BACKENDS
+
+dnl -*- mode: Autoconf; -*-
+dnl Invoke autogen.sh to produce a configure script.
+
+AC_ARG_ENABLE(qt-dbus,
+ AS_HELP_STRING([--enable-qt-dbus],
+ [build Qt bindings for D-Bus]),
+ enable_qt_dbus="$enableval", enable_qt_dbus="no")
+
+if test "$enable_qt_dbus" = "yes"; then
+ AC_DEFINE(ENABLE_QT_DBUS, 1, [Qt D-Bus bindings available])
+ need_qt_modules="$need_qt_modules +dbus"
+ AC_PATH_PROG([QDBUSXML_TO_CPP], [qdbusxml2cpp], [no])
+ test "x$QDBUSXML_TO_CPP" != 'xno' || AC_MSG_ERROR([--enable-qt-dbus requires qdbusxml2cpp, which was not found])
+fi
+
+AM_CONDITIONAL([ENABLE_QT_DBUS], [test "$enable_qt_dbus" = "yes"])
+
+AC_SUBST(QT_DBUS_LIBS)
+AC_CONFIG_FILES([src/dbus/qt/syncevolution-qt-dbus.pc])
+
+dnl -*- mode: Autoconf; -*-
+dnl Invoke autogen.sh to produce a configure script.
+dnl configure-pre.in and src/backends/*/configure-sub.in and configure-post.in come before this part
+
+AC_SUBST(BACKEND_CPPFLAGS)
+
+enable_any="no"
+backend_is_enabled () {
+ eval echo \${enable_${1}}
+}
+for backend in $BACKENDS; do
+ if test `backend_is_enabled $backend` = "yes"; then
+ enable_any="yes"
+ SYNCEVOLUTION_MODULES="$SYNCEVOLUTION_MODULES src/backends/sync${backend}.la"
+ fi
+done
+
+if test "$enable_any" = "no"; then
+ AC_MSG_ERROR([no backend enabled - refusing to continue: $anymissing])
+fi
+
+dnl glib initialization is done only if requested by some configure-sub.in,
+dnl for not needed otherwise even if found
+if test "$need_glib" = "yes"; then
+ # HAVE_GLIB (aka GLIBFOUND) are a catch-all for these
+ # three GNOME libs. Assume we have all three unless one of
+ # the checks fails.
+ GLIBFOUND=yes
+
+ dnl check for glib - calling g_type_init() is expected on Maemo
+ PKG_CHECK_MODULES(GLIB, "glib-2.0", , GLIBFOUND=no)
+ # This check here is broken on Ubuntu 8.04: it calls glib-config,
+ # which isn't found, but the error is not detected by configure.
+ #if test "x${GLIBFOUND}" = "xno"; then
+ # PKG_CHECK_MODULES(GLIB, "glib", GLIBFOUND=yes, GLIBFOUND=no)
+ #fi
+
+ PKG_CHECK_MODULES(GTHREAD, "gthread-2.0", , GLIBFOUND=no)
+ PKG_CHECK_MODULES(GOBJECT, "gobject-2.0", , GLIBFOUND=no)
+ PKG_CHECK_MODULES(GIO, "gio-2.0", , GLIBFOUND=no)
+
+ if test "x${GLIBFOUND}" = "xyes"; then
+ AC_DEFINE(HAVE_GLIB, 1, [glib found])
+ else
+ AC_MSG_ERROR([not all GNOME libraries found])
+ fi
+ BACKEND_CPPFLAGS="$BACKEND_CPPFLAGS $GLIB_CFLAGS $GTHREAD_CFLAGS $GOBJECT_CFLAGS"
+fi
+
+dnl use libical if and only if required by some backend
+if test "$need_ical" = "yes"; then
+ PKG_CHECK_MODULES(LIBICAL, libical,
+ [true],
+ [PKG_CHECK_MODULES(LIBICAL, libecal-1.2)])
+ AC_DEFINE(ENABLE_ICAL, 1, [libical in use])
+fi
+AM_CONDITIONAL([ENABLE_ICAL], [test "$need_ical" = "yes"])
+
+
+# Check for Qt if some backend needs it.
+if test "$need_qt_modules"; then
+ AT_WITH_QT([-gui $need_qt_modules],
+ [$qt_config],
+ [$qt_misc])
+fi
+
+# determine from where we can get a SHA-256 implementation
+have_sha="no"
+if test "$GLIBFOUND" = "yes"; then
+ # only use glib if we need it anyway, also has to be at lease 2.16
+ PKG_CHECK_MODULES(GLIB216, [glib-2.0 >= 2.16],
+ [AC_DEFINE(USE_SHA256, 1, [choose implementation of SHA-256])
+ have_sha="glib"],
+ [true])
+fi
+if test "$have_sha" = "no"; then
+ # Fallback is Mozilla NSS. In contrast to libgcrypt it has a .pc
+ # file and a simple API.
+ PKG_CHECK_MODULES(NSS, "nss",
+ [AC_DEFINE(USE_SHA256, 2, [choose implementation of SHA-256])
+ have_sha="nss"],
+ [true])
+fi
+
+dnl figure out whether we link all code statically or as modules
+AM_CONDITIONAL([ENABLE_MODULES], [test "$enable_shared" = "yes"])
+if test "$enable_shared" = "yes"; then
+ AC_DEFINE(ENABLE_MODULES, 1, [enable dynamically opening sync source backends])
+fi
+AC_SUBST(SYNCEVOLUTION_LDADD)
+
+dnl CXXFLAGS gets applied to SyncEvolution and the client library.
+dnl For e.g. "-Wall -Werror" this might not be such a good idea;
+dnl SYNCEVOLUTION_CXXFLAGS can be used instead. It applies only
+dnl to the sources in the SyncEvolution repository.
+AC_SUBST(SYNCEVOLUTION_CXXFLAGS)
+
+dnl a quick-and-dirty way to detect compilation for the iPhone
+if test "$host" = "arm-apple-darwin"; then
+ AC_DEFINE(IPHONE, 1, [compiling for iPhone])
+ DEVICE_TYPE=iPhone
+fi
+
+dnl --enable-evolution-compatibility
+if test "$enable_evolution_compatibility" = "yes"; then
+ AC_DEFINE(EVOLUTION_COMPATIBILITY, 1, [avoid hard dependency on Evolution shared objects])
+ # don't link against libs wrapped by eds_abi_wrapper (no longer limited to EDS alone...)
+ ECAL_LIBS=
+ EBOOK_LIBS=
+ EPACKAGE_LIBS=
+ BLUEZ_LIBS=
+fi
+AM_CONDITIONAL([ENABLE_EVOLUTION_COMPATIBILITY], [test "$enable_evolution_compatibility" = "yes"])
+PKG_CHECK_MODULES(LIBICAL_AVAILABLE,
+ libical >= 0.43,
+ AC_DEFINE(HAVE_LIBICAL_R, 1, [have recent enough libical with _r variants]),
+ pass)
+
+dnl --enable-developer-mode
+if test "$enable_developer_mode" = "yes"; then
+BACKENDS_SEARCH_DIRECTORY="`pwd`/src/backends/"
+else
+BACKENDS_SEARCH_DIRECTORY='$(libdir)/syncevolution/backends/'
+fi
+
+BACKENDS_DIRECTORY='$(libdir)/syncevolution/backends'
+AC_SUBST(BACKENDS_DIRECTORY)
+AC_SUBST(BACKENDS_SEARCH_DIRECTORY)
+
+# for ActiveSync backend
+syncevo_backenddir='$(libdir)'/syncevolution/backends
+AC_SUBST(syncevo_backenddir)
+
+dnl This string is sent as part of the SyncML DevInf (device
+dnl information) structure to the server. All SyncEvolution platforms
+dnl use "SyncEvolution" as HTTP user agent and "Mod" (model), so the
+dnl device type is the only way how different kinds of clients can be
+dnl distinguished.
+AC_DEFINE_UNQUOTED(DEVICE_TYPE, "$DEVICE_TYPE", "SyncML DevInf DevType")
+
+AC_CHECK_HEADERS(stdarg.h valgrind/valgrind.h execinfo.h)
+
+AC_DEFINE(SYNTHESIS, 1, "using Synthesis engine")
+
+# fallback for lack of --with-docdir support in older automake
+if test ! "$docdir"; then
+ docdir = ${datadir}/doc/syncevolution
+ AC_SUBST(docdir)
+fi
+
+AC_ARG_ENABLE(dbus-timeout-hack,
+ AS_HELP_STRING([--enable-dbus-timeout-hack],
+ [Enables code which overrides the default timeout in dbus_connection_send_with_reply() so that the method call never times out. Needed for libecal/ebook >= 2.30, so enabled by default if either of these is enabled.]),
+ [enable_dbus_timeout_hack=$enableval],
+ [if test $enable_ebook = "yes" || test $enable_ecal = "yes"; then
+ enable_dbus_timeout_hack="yes"
+ fi])
+if test "$enable_dbus_timeout_hack" = "yes"; then
+ AC_DEFINE(ENABLE_DBUS_TIMEOUT_HACK, 1, [overrides the default D-Bus timeout so that synchronous calls never time out])
+fi
+
+# Avoid hard-coding paths in backends. These names are chosen so
+# that a backend can alternatively use its own top-level configure
+# with PKG_CHECK_MODULES(SYNCEVOLUTION, "syncevolution") to set them.
+# need absolute path, use pwd instead of relative $srcdir
+#
+# When adding something here, remember to also update syncevolution.pc.in.
+# -lrt is for clock_gettime() in the Timespec.h inline functions.
+SYNCEVOLUTION_CFLAGS=-I`cd $srcdir && pwd`/src
+SYNCEVOLUTION_LIBS="src/syncevo/libsyncevolution.la -lrt"
+AC_SUBST(SYNCEVOLUTION_CFLAGS)
+AC_SUBST(SYNCEVOLUTION_LIBS)
+
+# invoking syncevolution binary is allowed to fail when cross-compiling
+AM_CONDITIONAL([COND_CROSS_COMPILING], [test "$cross_compiling" = "yes"])
+
+AC_CONFIG_FILES([
+ Makefile
+ src/syncevo/syncevolution.pc
+ src/synthesis-includes/Makefile
+ po/Makefile.in
+ src/dbus/glib/syncevo-dbus.pc
+])
+AC_OUTPUT
+
+echo
+echo CONFIGURATION SUMMARY
+echo "Core SyncEvolution: $enable_core"
+for backend in $BACKENDS; do
+ eval echo $backend: \${enable_${backend}}
+done
+echo "DBus service: $enable_dbus_service"
+echo "Notifications: $enable_notify"
+echo "GIO GDBus: $with_gio_gdbus"
+echo "GNOME keyring: $enable_gnome_keyring"
+if test "$enable_gui" = "no"; then
+ echo "UI (DBus client): no"
+else
+ echo "UI (DBus client): $enable_gui (using $gtk_version)"
+fi
+echo "Bluetooth transport: $have_bluetooth"
+echo "GNOME Bluetooth panel plugin: $enable_gnome_bluetooth_panel"
+echo "SHA-256: $have_sha"
+echo "API documentation: $enable_doc"
+echo "D-Bus Timeout Hack: $enable_dbus_timeout_hack"
+echo